Power Artist User Guide
Power Artist User Guide
ANSYS, Ansys Workbench, AUTODYN, CFX, FLUENT and any and all ANSYS, Inc. brand, product, service and feature
names, logos and slogans are registered trademarks or trademarks of ANSYS, Inc. or its subsidiaries located in the
United States or other countries. ICEM CFD is a trademark used by ANSYS, Inc. under license. CFX is a trademark
of Sony Corporation in Japan. All other brand, product, service and feature names or trademarks are the property
of their respective owners. FLEXlm and FLEXnet are trademarks of Flexera Software LLC.
Disclaimer Notice
THIS ANSYS SOFTWARE PRODUCT AND PROGRAM DOCUMENTATION INCLUDE TRADE SECRETS AND ARE
CONFIDENTIAL AND PROPRIETARY PRODUCTS OF ANSYS, INC., ITS SUBSIDIARIES, OR LICENSORS. The software
products and documentation are furnished by ANSYS, Inc., its subsidiaries, or affiliates under a software license
agreement that contains provisions concerning non-disclosure, copying, length and nature of use, compliance
with exporting laws, warranties, disclaimers, limitations of liability, and remedies, and other provisions. The software
products and documentation may be used, disclosed, transferred, or copied only in accordance with the terms
and conditions of that software license agreement.
ANSYS, Inc. and ANSYS Europe, Ltd. are UL registered ISO 9001: 2015 companies.
For U.S. Government users, except as specifically granted by the ANSYS, Inc. software license agreement, the use,
duplication, or disclosure by the United States Government is subject to restrictions stated in the ANSYS, Inc.
software license agreement and FAR 12.212 (for non-DOD licenses).
Third-Party Software
See the legal information in the product help files for the complete Legal Notice for ANSYS proprietary software
and third-party software. If you are unable to access the Legal Notice, contact ANSYS, Inc.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. iii
User Guide
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
iv of ANSYS, Inc. and its subsidiaries and affiliates.
User Guide
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. v
User Guide
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
vi of ANSYS, Inc. and its subsidiaries and affiliates.
User Guide
7.3.3.1. VHDL Designs with One or More Verilog Modules ......................................................... 137
7.3.3.2. Verilog Designs with One or More VHDL Modules ......................................................... 137
7.3.3.3. Compiling Mixed-Language Designs in a Single Run ..................................................... 138
7.4. Creating Custom VHDL Packages ................................................................................................... 139
7.4.1. Technique 1: Modifying Your Installation ............................................................................... 139
7.4.2. Technique 2: Multiple Compile Scripts ................................................................................... 139
7.5. Precompiled VHDL Libraries .......................................................................................................... 140
7.6. The 'wwvmkr' Utility ...................................................................................................................... 141
7.6.1. Creating Your Map Files ........................................................................................................ 141
7.6.2. Running the 'wwvmkr' Utility ................................................................................................ 142
7.7. Precompile RTL Files to a Library (Save/Restore) ............................................................................. 142
7.8. Elaboration Using Advanced Gates ................................................................................................ 144
7.8.1. Understanding the Advanced Gates Model ........................................................................... 145
7.9. Defining Libraries for Command-Line Use ...................................................................................... 148
7.10. Overriding Parameter Settings for Top-Level VHDL/Verilog Modules ............................................. 149
7.11. HDL Advanced Topics .................................................................................................................. 150
7.11.1. Behavioral Clock Gating ...................................................................................................... 150
7.11.2. Using Power Macros ........................................................................................................... 151
7.11.3. Handling Long Parameterized Module Names ..................................................................... 153
7.11.4. Controlling Array Inferencing .............................................................................................. 153
7.11.5. Vector Slicing of Registers and Latches ................................................................................ 156
7.11.6. Enhanced Cell Mapping ...................................................................................................... 157
7.11.7. Default Optimizations and Flows ........................................................................................ 159
7.11.7.1. Compound Cell Modeling .......................................................................................... 159
7.11.7.2. Clock Gating for Inverted Enable Logic ....................................................................... 159
7.11.7.3. Support for Escaped Identifiers .................................................................................. 159
7.11.7.4. Boolean Optimization ................................................................................................ 160
7.12. Gzipped File Support .................................................................................................................. 160
8. PowerArtist RTL Encryption ................................................................................................................ 161
8.1. Introduction ................................................................................................................................. 161
8.2. Use-Model/Flow ........................................................................................................................... 161
8.3. Using the 'ProtectRTL' Command for Encryption ............................................................................ 162
8.3.1. Reading Input RTL Files ........................................................................................................ 162
8.3.2. Generating the Encrypted RTL .............................................................................................. 163
8.4. Decryption and Power Analysis ..................................................................................................... 163
8.5. Support for IEEE-1735 ................................................................................................................... 164
8.5.1. Encryption by IP Creators ..................................................................................................... 164
8.5.2. Decryption by PowerArtist .................................................................................................... 166
9. Preparing for Power Analysis .............................................................................................................. 167
9.1. Introduction ................................................................................................................................. 167
9.2. Estimating Net Capacitances ......................................................................................................... 167
9.2.1. Back-Annotating Capacitance Using SPEF ............................................................................. 168
9.2.2. Using Back-Annotated Load Capacitances for Primary Outputs .............................................. 170
9.2.3. Specifying Default Output Load Capacitance Using a Command Option ................................ 170
9.2.4. Using Back-Annotated Wiring Capacitances for Local Nets ..................................................... 170
9.2.5. Specifying Wire Load Models ................................................................................................ 171
9.2.5.1. Using the Wire Load Model Tcl Commands ................................................................... 171
9.2.5.2. Rules for Estimating Wire Capacitance .......................................................................... 171
9.2.6. Using Default Wire Load Models for Capacitance Analysis ...................................................... 173
9.3. Estimating Pin Capacitance ........................................................................................................... 173
9.4. Handling Voltages in Liberty Format .............................................................................................. 174
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. vii
User Guide
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
viii of ANSYS, Inc. and its subsidiaries and affiliates.
User Guide
11.3.4. Creating a Named Pipe to Manually Compress VCD Files ...................................................... 212
11.3.5. Support for Processing Multi-dimensional Nets in the VCD Flow .......................................... 213
11.4. Acquiring Simulation Data in Palladium Flows ............................................................................. 213
11.5. Troubleshooting Tips ................................................................................................................... 215
11.5.1. Missing 'timescale in Verilog ............................................................................................... 215
11.5.2. Zero Length 'activities.iaf' File ............................................................................................. 215
11.5.3. Problems with ModelSim .................................................................................................... 215
11.5.4. Zero Delay Simulation ........................................................................................................ 215
12. Analyzing Simulation-Based Average Power .................................................................................... 217
12.1. Introduction ............................................................................................................................... 217
12.2. Overall Design Flow .................................................................................................................... 217
12.3. Running a Power Analysis in Full Simulation Mode ....................................................................... 218
12.3.1. Controlling Your Average Power Analysis ............................................................................. 218
12.3.2. Sample CalculatePower Specification for Full Simulation Mode ............................................ 220
12.4. Controlling the Analysis of Simulation Data ................................................................................. 220
12.4.1. Controlling GAF File Creation Explicitly ............................................................................... 220
12.4.2. Determining Weights for a GAF File ..................................................................................... 221
12.4.3. Multiple Testbench Support ................................................................................................ 222
12.4.4. Using the Multiple Testbench Feature to Control FSDB File Size ............................................ 224
12.5. Running Analysis with Incomplete Simulation Data ...................................................................... 225
12.6. Re-Using a Stimulus File from a Previous Run ............................................................................... 225
12.7. Performing Power Analysis with Block-level Simulation Data ........................................................ 226
12.7.1. Performing Top-level Power Analysis ................................................................................... 226
12.7.2. Performing Block-level Power Analysis ................................................................................ 227
12.7.3. Performing Top-level Power Analysis with Multiple Block-level Simulation Activity Files ....... 228
12.8. Performing Gate-level Power Analysis .......................................................................................... 230
12.9. Running Modal Analysis .............................................................................................................. 231
12.10. Understanding the Basics of the Detailed Power Report ............................................................. 232
12.11. Controlling the Contents of the Power Report ............................................................................ 234
12.12. Analyzing Average Power Using a SAIF File ................................................................................ 243
12.13. Analyzing Average Power Using Partial Stimulus Files ................................................................. 245
12.14. Name Mapping Flow ................................................................................................................. 245
12.15. Parallel Activity Processing ........................................................................................................ 247
12.16. RTL Glitch Power Analysis .......................................................................................................... 248
13. Analyzing Vectorless Average Power ................................................................................................ 251
13.1. Flow Overview ............................................................................................................................ 251
13.2. Creating the VAF File ................................................................................................................... 251
13.3. Using the 'SetStimulus' Command ............................................................................................... 251
13.4. What-if Power Analysis with User-specified Signal Activity ............................................................ 253
14. Analyzing Time-Based Power ............................................................................................................ 255
14.1. Introduction ............................................................................................................................... 255
14.2. Overall Design Flow .................................................................................................................... 255
14.3. Understanding the Inputs for a Time-Based Power Analysis .......................................................... 256
14.4. Controlling Your Time-based Power Analysis ................................................................................ 256
14.4.1. Mandatory Options for all Time-based Analyses .................................................................. 256
14.4.2. Additional Options for Gate-Level Designs Only .................................................................. 257
14.4.3. Additional Arguments for RTL and Mixed Designs Only ....................................................... 257
14.5. Setting Timing Windows for Time-based Power Analysis .............................................................. 258
14.6. Running the Analysis ................................................................................................................... 258
14.6.1. Gate-level Time-based Power Analysis ................................................................................. 258
14.6.2. RTL Time-based Power Analysis .......................................................................................... 259
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. ix
User Guide
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
x of ANSYS, Inc. and its subsidiaries and affiliates.
User Guide
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. xi
User Guide
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
xii of ANSYS, Inc. and its subsidiaries and affiliates.
User Guide
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. xiii
User Guide
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
xiv of ANSYS, Inc. and its subsidiaries and affiliates.
User Guide
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. xv
User Guide
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
xvi of ANSYS, Inc. and its subsidiaries and affiliates.
User Guide
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. xvii
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
xviii of ANSYS, Inc. and its subsidiaries and affiliates.
List of Figures
4.1. Opening the PowerArtist Waveform Viewer ........................................................................................... 33
4.2. Vector Analysis Waveforms for Each Specified Group (Individual Plots) ................................................... 34
4.3. Vector Analysis Waveforms for Each Specified Group (One Plot) ............................................................. 34
4.4. Average and Absolute Flock Clock Activity Analysis Waveform in PTCL Format (One Plot) ....................... 37
4.5. Display of average_power.pdb (Average Power Analysis Results) ............................................................ 48
4.6. Schematic Display of Module Selected in the Hierarchy ......................................................................... 49
4.7. Properties Dialog for Net txdin .............................................................................................................. 50
5.1. Hierarchy Browser Display of Power Database ........................................................................................ 83
5.2. Simple Reductions Dialog ..................................................................................................................... 84
5.3. Sample of LNR PowerBot Expanded to Show Instances .......................................................................... 85
5.4. Menu for Instance-Level Entry ............................................................................................................... 86
5.5. Sample Context-Sensitive Help Page for the LNR PowerBot .................................................................... 87
5.6. Filtering Simple Reduction Results - Before ............................................................................................ 88
5.7. Filtering Simple Reduction Results - After .............................................................................................. 88
5.8. Linter Power Reductions Results ............................................................................................................ 89
5.9. CEC Linter Power Reduction Results with Detail Tab Displayed ............................................................... 90
6.1. Opening the PowerArtist Waveform Viewer ......................................................................................... 130
6.2. Waveform Viewer showing the peak power and high didt per cycle ...................................................... 131
8.1. RTL IP Flow ......................................................................................................................................... 162
10.1. Sample Vector Analysis Waveforms .................................................................................................... 205
14.1. Sample Power-Over-Time Waveform ................................................................................................. 262
14.2. Measuring Distance between Data Points .......................................................................................... 263
14.3. Sample Waveform in PTCL Format for Instantaneous Analysis ............................................................. 263
14.4. Sample Waveform in PTCL Format for Instantaneous Analysis ............................................................. 268
15.1. Overview of PowerBots ..................................................................................................................... 278
15.2. LNR - Schematic and Timing Diagrams ............................................................................................... 279
15.3. LNR - Circuit Diagram ........................................................................................................................ 280
15.4. DOI - Schematic Diagram 1 ................................................................................................................ 283
15.5. DOI - Schematic Diagram 2 ................................................................................................................ 283
15.6. LEC - Schematic Diagram ................................................................................................................... 284
15.7. LEC - Circuit Diagram ......................................................................................................................... 285
15.8. Split Memory Words - Schematic Diagram ......................................................................................... 288
15.9. Strengthened Observability Don't Care - Schematic Diagram ............................................................. 315
15.10. Linter Reduction Dialog Showing MUX Results ................................................................................. 329
15.11. Exclusive Cone of Logic in Schematic (Colored by Connectivity) ....................................................... 332
15.12. Sample Clock Gating Effectiveness Waveform .................................................................................. 348
16.1. Initial Power Canvas Display (Tutorial Design) .................................................................................... 378
16.2. PowerCanvas Menus ......................................................................................................................... 379
16.3. Schematic Viewer Shortcuts .............................................................................................................. 381
16.4. Find Dialog ....................................................................................................................................... 383
16.5. Find Dialog (Search with Multiple Criteria) ......................................................................................... 384
16.6. Displaying Source for Element in Returned Search List ....................................................................... 385
16.7. Preferences Dialog ............................................................................................................................ 387
16.8. Properties Dialog with Multiple Tabs and Instances Displayed ............................................................ 390
16.9. Displaying the Downstream Cone of Logic for an Output Pin .............................................................. 391
16.10. Hierarchy Browser ........................................................................................................................... 393
16.11. Design Menu .................................................................................................................................. 394
16.12. Schematic Display ........................................................................................................................... 396
16.13. Schematic Menu ............................................................................................................................. 397
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. xix
User Guide
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
xx of ANSYS, Inc. and its subsidiaries and affiliates.
List of Tables
7.1. Advanced Liberty Cell Models ............................................................................................................. 145
7.2. Description for Arguments and Effective Flow ..................................................................................... 148
15.1. Overview of PowerBots ..................................................................................................................... 278
18.1. Precedence Rules for the WriteTechnologyFile command ................................................................... 486
18.2. User-specified VT Group Override Precedence Rules .......................................................................... 488
18.3. When SetVoltageThreshold command is specified ............................................................................. 488
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. xxi
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
xxii of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 1: Introduction to PowerArtist
1.1. PowerArtist and Your Design Flow
PowerArtist is a complete RTL Design-For-Power (DFP™) environment with fully-integrated advanced
analysis and automatic reduction. The following diagram illustrates how PowerArtist fits into your design
flow:
You can analyze designs with multiple power supplies, mixed Verilog-Verilog2001-VHDL-System
Verilog descriptions, and embedded IP models. Power analysis includes both average power
analysis and time-based analysis. For detailed information on running these features, see Analyzing
Simulation-Based Average Power (p. 217) and Analyzing Time-Based Power (p. 255).
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 1
Introduction to PowerArtist
PowerArtist includes a comprehensive set of power reduction techniques, called PowerBots, that
you can use to perform clock, memory, and datapath power reduction. For complete details on
the available types of power reductions, see Examining and Implementing Power Reduction
Opportunities (p. 277).
• Activity/Vector Analysis
PowerArtist's vector analysis capability allows you to visualize activity for an entire test suite, for
any combination of modules in the design to quickly identify coverage problems and unexercised
power modes. You can select small, power-intensive time slices for detailed power verification.
For details on using vector analysis, see Analyzing Simulation Activity (p. 201).
PowerArtist includes a high performance power profiling engine which generates cycle-based
peak and average power profile of a given simulation vector. The engine trades off accuracy
for performance and hence does not report absolute power per cycle. For details on using
fast power profiling, see Fast Power Profiling (p. 507).
• An OpenAccess Database
PowerArtist stores power information in an OpenAccess database. The power information stored
includes netlists, power reduction results and properties that represent calculated or extracted
power data associated with the nets, instances and pins of your design.
• Analysis Tutorials
• Reduction Tutorials
• Advanced Tutorials
Note: The PowerArtist tutorials are a feature demonstrator and are not intended as an example on how
to set up PowerArtist on a new design.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
2 of ANSYS, Inc. and its subsidiaries and affiliates.
Sample Flow Script Templates
The scripts support the common flows, such as Power Analysis, Power Reduction, Vector Analysis,
ProfilePower, Vectorless power analysis and reduction, Static RTL efficiency analysis, and PACE generation
and usage and capture common 'best practices'.
For detailed information on how to make the best use of these sample scripts, contact your support
application engineer for the 'Application Note'.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 3
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
4 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 2: Installing and Setting Up PowerArtist
2.1. Introduction
This chapter provides instructions to enable you to install the software and access the PowerArtist
application. You need to perform the following three steps:
• Kernel version
• Window manager - 'fvwm X' and 'Metacity (Marco)'
• Shared Library requirements
• 'ANSYSLMD_LICENSE_FILE' settings
• Operating System support
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 5
Installing and Setting Up PowerArtist
You can launch PowerArtist either through 'pa_shell' or the PowerArtist GUI. PowerArtist may emit
warnings about the support that is in place for the platform that you are using (supported by proxy,
not supported) or errors if the platform is unrecognized. These errors, warnings, or informational
messages are written to the screen and captured in the 'pa_shell.log' file.
1. Decide where you want to put the distribution and change your working directory to that directory.
The following sub-directory is created within the current working directory:
PowerArtist/version/PowerArtist
2. Uncompress and extract the software distribution by typing the following command. The name of
the zipped tar file is platform-dependent.
gunzip -c PowerArtistversion.platform.tar.gz | tar xf -
Notes:
Contains some user examples and some examples for library developers.
• lbin
Contains administrative programs that you do not want in your 'PATH'. This includes the FLEXlm
administration utilities and the PowerArtist license server.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
6 of ANSYS, Inc. and its subsidiaries and affiliates.
PowerArtist Licensing
• lib
Contains VHDL source files for the IEEE, STD, Synopsys, and Vital libraries for the HDL analyzer,
'pthdl' (run by the Elaborate command).
• scripts
Contains Tcl files that implement all OADB utilities, such as, reportPower and reportCGEfficiency.
• sfl_lib
Contains the SFL model file (sfl_lib.dat) and generic technology library information.
• tutorial
Contains VHDL source files for the IEEE, STD, Synopsys and Vital libraries for the legacy VHDL
analyzer, 'wwvhdl'.
If you set the variable on the 'pa_shell' prompt, it is ignored. When 'pa_set' attempts to set it,
the following warning is printed:
pa_shell % pa_set multiple_license_files true
Warning SHL-72 : 'multiple_license_files' was obsoleted
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 7
Installing and Setting Up PowerArtist
If you set it via a tcl script, the same warning 'SHL-72' is issued, as shown below:
Warning SHL-72 : 'multiple_license_files' was obsoleted
in version 2020 R2.
It will be disregarded by this release.
pa_shell: Completed successfully with 1 warning(s)
• PowerArtist allows all available license servers to serve license requests and no additional user
setting is required.
• Support for the 'TIMEOUTALL' command (specified in the option file) to control license timeout
is available through the following variable:
pa_set wait_for_license_timeout <integer>
When specified, PowerArtist waits for the required license for the specified number of seconds
before exiting.
• If the license server is down, PowerArtist waits for one hour before shutting down. You can
extend the wait time of one hour to infinity by using the following variable:
pa_set -wait_for_license true
Ansys license logs are report QUEUE_STARTED, QUEUE_GRANTED and QUEUE_RETURNED messages
when a license is queued.
All other licensing inputs (such as environment variables) are documented and supported by the
corporate licensing team. Refer to the Ansys Licensing Guide and Ansys Installation Guides for more details.
Both these guides are available from the Ansys Customer Portal.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
8 of ANSYS, Inc. and its subsidiaries and affiliates.
PowerArtist Licensing
At the product level, 'pa_shell' also has an option to wait for a product license, (such as an SOC
license) as shown in the example below:
pa_shell -SOC -wait
Example
In the following example, the port number is 7788:
SERVER hostname 000f1f64dc32 7788
Ansys recommends switching to app_version: '101.47.76' or if that does not work, shutting down
Microsoft Defender.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 9
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
10 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 3: Using the PowerArtist Shell
3.1. Introduction
The PowerArtist shell (pa_shell) is a fully functional Tcl shell, from which all other PowerArtist commands
must be invoked. You can use any standard Tcl command inside of this shell. When you start up the
shell, information about the product is displayed on the stdout, and then receive a 'pa_shell' prompt.
You can run any PowerArtist command at the 'pa_shell' prompt.
Syntax
pa_shell
[-auto_exit]
[-cmd <tcl_command>]
[-ex]
[-key <file_name>]
[-log <log_file>]
[-pt]
[-tcl <tcl_file>]
[-wait]
[-work <directory_name>]
Options
-auto_exit
Automatically exits the PowerArtist shell after the file specified with the '-tcl' option is evaluated.
The default behavior is to remain in the shell if the specified does not contain an 'exit' command.
-cmd <tcl_command>
Executes the specified Tcl command and then exits with the result.
-ex
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 11
Using the PowerArtist Shell
-key <file_name>
Specifies the key file name. The key file is a record of all commands issued during a PowerArtist
shell session.
-log <log_file>
Specifies the alternate log file name. The default file location and name is:
<work_dir>/pa_shell.log
-pt
Consumes licenses at the PowerArtist/PT level. Excludes Powerartist features, including reduction.
You get a 'pa_shell' prompt with this option.
-tcl <tcl_file>
Sources a file containing Tcl commands and then exits with the result. These commands may also
include PowerArtist commands.
-wait
Waits for the appropriate product license to become available rather than exiting immediately with
a message indicating that a license is not available.
-work
Specifies the alternate work directory name. The default location and name is:
./pa_shell_work
Examples
• Example 1: The following command invokes the PowerArtist shell. At the resulting 'pa_shell'
prompt, you can type any Tcl or PowerArtist command. By default, this command consumes the
'sptSOC' and 'sptArtist' licenses and you are able to execute all PowerArtist-PT commands:
pa_shell
• Example 2: The following command invokes the PowerArtist shell. By default, this command consumes
only 'sptSOC' licenses and you will not be able to perform power reduction analysis:
pa_shell -pt
• Example 3: The following command consumes licenses at the PowerArtist level and then runs the
Tcl script Elaborate.tcl:
pa_shell -tcl run_Elaborate.tcl
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
12 of ANSYS, Inc. and its subsidiaries and affiliates.
pa_shell Features
-top top \
-synlib_files {mylib.lib}
• Example 4: The following commands do the same thing as the command in Example 3, except that
you remain in 'pa_shell' when 'Elaborate.tcl' is complete. That is, it does not exit 'pa_shell'.
pa_shell
pa_shell % source Elaborate.tcl
• Example 5: When you type 'pa_shell' followed by a carriage return, you get the following prompt:
# Command:
pa_shell
# Output:
pa_shell %
• Example 6: To print a list of commands that you can use in a PowerArtist command file/Tcl script,
use the following command at the 'pa_shell' prompt:
pa_shell
pa_shell % help command
• Example 7: The following command prints help information for the CalculatePower command. The
information is first sent to stdout and then re-directed to a file named 'cphelp':
pa_shell -cmd "CalculatePower -help" > cphelp
To run a Tcl command at 'pa_shell', you must enclose the command in quotes as shown in the
example above.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 13
Using the PowerArtist Shell
• Error Messaging
If 'pa_shell' encounters an error, it attempts to provide details using the TCL variable
'errorInfo'. This should enable users to determine the possible cause of the problem. Consider
the following example message:
pa_shell: Error 9675: An error was encountered by pa_shell: invalid command
name
DefineMemory1".
See the log for more details.
pa_shell: Failed with 1 error(s) and 0 warning(s)
When 'pa_shell' runs a sub-command (such as 'CalculatePower'), the result can be the entire
sub-command log file. If the message is more than five lines, 'pa_shell' filters and prints a
summary of the errors encountered, as shown in the following example:
rm: cannot remove directory `pa_shell_work': Directory not empty
The shell expands a command to the next unique character and provides a list of all possible
commands/file names to complete the entry.
'pa_shell' automatically sets the variable 'wait_for_license' to 'true'. This ensures that
all commands that are run at the 'pa_shell' prompt now have the value set for them.
• Command-line editing
Use the left and right arrows, control characters, and escape sequences to edit the current
command on the command line. The following table lists the keystroke combinations and their
associated actions:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
14 of ANSYS, Inc. and its subsidiaries and affiliates.
Customizing Your PowerArtist Environment Using Initialization (INI) Files
Use the up and down arrows to scroll through commands that were previously executed in the
current session. By default, 20 commands are saved in history. Use 'history keep 50' to
increase the history size to 50.
The file allows you to customize your pa_shell run. See the next section for details.
1. The default .ini file located at '$POWERARTIST_ROOT/pa_shell.ini' is read first. Further .ini
files (if present) modify the settings in this file.
2. The .ini file located at '$HOME/pa_shell.ini' is read next. Use this .ini file to customize the shell
for yourself as a user.
3. The .ini file located at '$PWD/pa_shell.ini' is read next. Use this .ini file to customize the shell
for a particular run.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 15
Using the PowerArtist Shell
4. The .ini file pointed to by the environment variable '$PA_SHELL_INI', if present, is read last. Use
this .ini file to customize the shell for a particular project.
history keep 50
• pa_shell.log
This file captures all tool outputs for your current session. This includes commands run, output
generated (including the content of each of the individual 'command_name.log' files), and the
contents of any sourced files. You can change the name of this file using the 'pashLogFile'
Tcl variable in your '.ini' file.
• pa_shell.key
This file captures commands executed from the pa_shell. You can source this '.key' file to re-run
the exact sequence of commands from the recorded session. You can change the name of this
file using the 'pashKeyFile' Tcl variable.
• You can invoke PowerCanvas from 'pa_shell' using the 'PowerCanvas' command:
pa_shell % PowerCanvas
• You can optionally use the '-pdb' option to specify the power database to load:
pa_shell % PowerCanvas -pdb top.pdb
• You can also bring up the GUI from the UNIX command line as shown below:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
16 of ANSYS, Inc. and its subsidiaries and affiliates.
'Man' command Support
% PowerArtist
This is the recommended way to invoke the PowerArtist's GUI with full analysis and reduction
capabilities.
PowerArtist includes support for the following Linux commands that enable you to view the description
of PowerArtist commands and options (including all 'pa_set' options and 'pa_shell' commands):
• man
Is a built-in manual for using Linux commands. It allows users to view the reference manuals of
a command or utility run in the terminal. The man page (short for manual page) includes a
command description, applicable options, flags, examples, and other informative sections.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 17
Using the PowerArtist Shell
• apropos
If you know what you want to do, but you do not know which command to use, try the 'apropos'
command. The command prints one-line summaries of commands, based on 'keyword' search.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
18 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 4: PowerArtist Tutorial Part I: Power Analysis
4.1. Introduction
This tutorial showcases how to perform RTL power analysis for your design using PowerArtist and
highlights design elaboration, vector and clock activity analysis, average and time-based power analysis,
and generation of useful power analysis reports.
Notes:
• This tutorial does not cover power reduction and the advanced features of PowerArtist. To run
the power reduction tutorial, see PowerArtist Tutorial Part II: Power Reduction (p. 71). To run
the tutorials of the advanced features, see PowerArtist Tutorial Part III: Advanced Features (p. 95).
• The PowerArtist tutorials are a feature demonstrator and are not intended as an example on
how to set up PowerArtist on a new design.
Tutorial Organization
The following topics are covered in this tutorial:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 19
PowerArtist Tutorial Part I: Power Analysis
There are four directories in the 'tutorial' directory. Ansys recommends that you copy the entire
contents of the directory to a local run directory:
% cp -r $POWERARTIST_ROOT/tutorial .
Directory Description
Name/FileName
data Contains the technology libraries, design, and simulation data required to
run the RTL and gate-level tutorials. It includes the following directories:
• design
• libraries
• sdc
• sim
• spef
• upf_cpf
analysis Contains the power analysis tutorial files. This tutorial demonstrates how to
perform HDL inferencing, activity analysis for clock and data, and average
and time-based power analysis.
reduction Contains the power reduction tutorial files. This tutorial demonstrates how
to perform RTL power reduction. This tutorial is described in the next chapter.
For instructions on running the reduction tutorial, see PowerArtist Tutorial
Part II: Power Reduction (p. 71).
advanced Contains a number of sub-directories that each run a different type of tutorial
and demonstrate some of the advanced features of PowerArtist:
• pace - Physically-Aware RTL Power Accuracy with PACE Models (p. 119)
README This is a text file that provides information about the 'tutorial' directory
structure.
For the power analysis tutorial, you need only the 'analysis' and 'data' directories. To get started,
copy the directories from the following location:
$POWERARTIST_ROOT/tutorial/analysis
$POWERARTIST_ROOT/tutorial/data
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
20 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding the Power Analysis Flow
Directory Description
Name/FileName
README Describes the basic flow for running this tutorial.
input Contains the following files:
pa_shell.ini Is the initialization file that sets the 'pa_shell' prompt and is used
to customize the 'pa_shell' settings at multiple levels.
run.tcl A Tcl script to run the tutorial in batch mode.
scripts Tcl scripts called by 'run.tcl' that perform various sub-tasks
related to power analysis (such as, design elaboration, vector
analysis, and average power analysis).
cleanall A script to remove all the files created while running the 'analysis'
tutorial.
The main steps in this power analysis flow are controlled by the following commands:
1. Elaborate
Compiles the HDL design description into an internal binary format called the scenario file.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 21
PowerArtist Tutorial Part I: Power Analysis
2. GenerateActivityWaveforms
Analyzes the activity file and produces waveform files representing the activity in your design.
3. CalculateFlopClockActivity
4. CalculatePower
4.3.1. Inputs
PowerArtist requires the following inputs to calculate power for an RTL or a gate-level design:
2. Set up common design identifiers and directories for log and report files:
pa_shell $ source ./scripts/setup.tcl
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
22 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding the Analysis Tutorial Steps
6. Set up RTL power - clocks, multi VT, design, and library database:
pa_shell % source ./scripts/power_setup.tcl
These steps are explained in detail in the next sections. You can also run all the steps via a single tcl
file (run.tcl):
% pa_shell -tcl run.tcl
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 23
PowerArtist Tutorial Part I: Power Analysis
Type 'pa_shell' to launch the PowerArtist shell and source 'setup.tcl' to create the required
directories:
pa_shell % source ./scripts/setup.tcl
You can also specify the '-synlib_files' option to the 'CalculatePower' or 'ReducePower'
commands.
The 'WriteLibraryDatabase' command compiles the specified Liberty library files and ALF library files
into a binary format. This reduces library reading time for downstream processes, such as elaboration,
reduction, and rewrite.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
24 of ANSYS, Inc. and its subsidiaries and affiliates.
Design Elaboration
Source 'libraries.tcl' to read the liberty files and create a library database:
pa_shell % source ./scripts/libraries.tcl
• Before running the 'Elaborate' command, you need to specify the appropriate commands to compile
your Verilog and/or VHDL design files.
1. Since this is a mixed design with Verilog and VHDL, you can specify the VHDL libraries and files
by using the 'compile_vhdl.tcl' file:
source ./scripts/compile_vhdl.tcl
2. You can specify the Verilog files through a start-up file (that contains a list of Verilog files) by
using the following option:
-verilog_startup_file <file_name>
• Specify the top-level module in your design by using the following option:
-top top_level_module_name
• Specify the name of scenario file to create by using the following option:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 25
PowerArtist Tutorial Part I: Power Analysis
-scenario_file <file_name>
• Specify the directory that contains the library database by using the following option:
-library_database_dirs <dir_name>
• Write and specify name of the power database (.pdb) by using the following options:
-elaborate_write_power_db true
-power_db_name db_name
• Specify the name for the log file for this elaboration run by using the following option:
-elaborate_log elaborate.log
Elaborate \
-top $design \
-verilog_startup_file ./input/txrx.vc \
-system_verilog true \
-library_database_dirs ./$DB_DIR/library_db \
-elaborate_write_power_db true \
-power_db_name ./$DB_DIR/elaborate.pdb \
-scenario_file ./$WORK_DIR/$design.scn \
-elaborate_log ./$LOG_DIR/elaborate.log
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
26 of ANSYS, Inc. and its subsidiaries and affiliates.
Common Setup for Clock Definitions
-sdc_out_file ./$WORK_DIR/ReadSDC.scr \
-vectorless_input_file ./$WORK_DIR/ReadSDC.vaf \
-sdc_log ./$LOG_DIR/read_sdc.log
source ./$WORK_DIR/ReadSDC.scr
• If you specify '-mode infer' you must specify root, branch, and leaf clock buffers for clock tree
inferencing using the 'SetClockBuffer' command:
SetClockBuffer -type (root | branch | leaf)
-name buffer_name -library library_name
-fanout buffer_fanout
Note: The library name you specify with the '-library' option is the logical library name that is
present in the '.lib' with library attribute.
• Use the 'SetClockGatingStyle' command to specify the clock gating cell to be used:
SetClockGatingStyle [-min_bit_width bit_width]
-clock_cell_attribute gating_cell_type
-gating_cells {lib_name:cell_name}
You need to specify the 'clock_gating_integrated_cell' attribute in the library with the
'-clock_cell_attribute' option. PowerArtist looks for it in the .lib to determine the clock
gating cell.
• Similar to clock buffer inferencing, use the 'SetHighFanoutNet' command to infer buffer trees for
high fanout nets in the design:
SetHighFanoutNet -fanout max_signal_fanout
SetBuffer -type (root | branch | leaf) -name buffer_name \
-library library_name -fanout buffer_fanout
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 27
PowerArtist Tutorial Part I: Power Analysis
This tutorial uses wire load models. To use them, you need to specify some additional Tcl commands
and a few options specific to the 'CalculatePower' command.
• To specify the library containing wire load models, use the following option:
-wireload_library library_name
• To specify the wire load mode, use the following Tcl command:
SetWireLoadMode <top | enclosed>
• If you specify the wire load mode as 'top', you must specify the wire load model using the following
command:
SetWireLoadModel [-name model_name] -instance inst_name(s) \
-library lib_name [-scaling_factor factor]
• In the absence of wire load models in the .libs, you can use the PowerArtist default wire load
models. You can scale these default wire load models with the following command:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
28 of ANSYS, Inc. and its subsidiaries and affiliates.
Running Static Efficiency Checks
• Classify cells into different VT types. Cells are placed into different VT categories in the .lib using
the following attributes:
– At the library level: default_threshold_voltage_group : "string";
– At the cell level: threshold_voltage_group : "string";
The string value specifies the voltage threshold type. If the .libs do not contain these
attributes, you can categorize the cells using the 'SetVoltageThreshold' command:
SetVoltageThreshold -group threshold_group \ -pattern cell_pattern_list
• Specify the mixed-VT percentage for cell selection using the 'SetVT' command:
SetVT -mode percentage -instance {instance_list} -vt_group {threshold_group_list}
Source 'power_setup.tcl' to specify mixed-VT libraries, threshold, and mixed-VT percentage for
cell selection:
pa_shell % source ./scripts/power_setup.tcl
Note: Multi-VT is not supported for high fanout and clock buffer modeling.
To run the 'AnalyzeStaticEfficiency' command you need to specify the scenario file, the log name and
the static pdb name to generate.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 29
PowerArtist Tutorial Part I: Power Analysis
openPDB ./$DB_DIR/static_analysis.pdb
source $env(POWERARTIST_ROOT)/utils/atcl/
atcl_generate_static_efficiency_report.tcl
Source 'static_analysis.tcl' to run the static efficiency checks and generate the report:
pa_shell % source ./scripts/static_analysis.tcl
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
30 of ANSYS, Inc. and its subsidiaries and affiliates.
Running Activity Analysis for Clock and Data
<snip>
You can perform vector analysis in one of the following two modes:
• activity_per_cycle
• frequency_per_interval
Both modes are supported by the 'GenerateActivityWaveforms' command. In this tutorial, the
'frequency_per_interval' mode is used because the 'activity_per_cycle' mode requires
a free running clock.
• Specify the category to automate the per-category monitoring of activity waveforms by using the
following option with the 'DefineGroup' command:
-category <category_name>
Each defined group generates a separate waveform in the output file (FSDB or PTCL).
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 31
PowerArtist Tutorial Part I: Power Analysis
As part of the 'GenerateActivityWaveforms' command, you need to specify activity files in the form
of VCD, gzipped VCD, or FSDB files. You also need to specify the '$scope' statement path to the
simulation testbench that corresponds to the top module you specified with the 'Elaborate' command.
• To specify the name of the activity file, use the following option:
-activity_file <activity_filename>
• To specify the hierarchical instance name of the top-level module in the activity file, use the
following option:
-top_instance top_instance_name
The average frequency over a specified interval mode allows you to trace the average frequency of
the design (or group of instances in the design) at every specified time interval. You must specify the
time value for the following options in units of 'fs', 'ps', 'ns', 'us' or 'ms'.
• Specify the groups, defined using the 'DefineGroup' command, for which you want to generate
activity waveforms using the following option:
-activity_waveform_group_list {group1 group2 group3 ...}
While doing vector analysis, you can specify the form of the output:
• Use the following option to generate an output waveform in FSDB ('.fsdb') format:
-fsdb_output_file <file_name>.fsdb
• Use the following option to generate an output waveform in textual PTCL ('.ptcl') format:
-ptcl_output_file <file_name>.ptcl
• Use the following option to specify a name for the log file for vector analysis:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
32 of ANSYS, Inc. and its subsidiaries and affiliates.
Running Activity Analysis for Clock and Data
-activity_waveform_log <file_name>.log
If you specified the FSDB format ('CalculatePower -fsdb_output_file' option), you can load
and display the waveforms in the Waveform Viewer. To launch the Waveform Viewer, do the following:
2. Select 'Tools > Waveform Viewer' and open the 'reports' folder. Then select
'activity_waveform.fsdb' from the 'Files' list on the right and click 'OK'.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 33
PowerArtist Tutorial Part I: Power Analysis
3. In the 'Waveform Name' field, type an '*' to find all the waveforms and click the 'Search' button.
4. Next, select 'all' the waveform names, 'Place waveforms in: Individual Plots' and click the 'Add
waveform to plot area' button.
The resulting waveforms show the average activity over time for the specified groups.
Figure 4.2: Vector Analysis Waveforms for Each Specified Group (Individual Plots)
You can also select 'all' the waveform names, ' Place waveforms in: One Plot' and click the 'Add
waveform to plot area' button. The resulting waveforms are shown below:
Figure 4.3: Vector Analysis Waveforms for Each Specified Group (One Plot)
As you can see in the waveform, the module 'rxchan' has very little activity in the first half of the
simulation but then turns on. The reverse happens with the instance 'txchan'. This clearly indicates
that the tutorial design starts out transmitting packets of information and switches to receiving
packets.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
34 of ANSYS, Inc. and its subsidiaries and affiliates.
Running Activity Analysis for Clock and Data
You can specify a list of hierarchical instances that you want FCA to monitor using the
'MonitorToggleInstances' command as shown below:
MonitorToggleInstances -instances top.core1.t1
MonitorToggleInstances -instances top.core1.r1
As part of the 'CalculateFlopClockActivity' command, you need to specify the scenario file and
activity files in the form of VCD, gzipped VCD, or FSDB files.
• To specify the name of the activity file, use the following option:
-activity_file <activity_file_name>
• To specify the hierarchical instance name of the top-level module in the VCD/FSDB, use the
following option:
-top_instance top_instance_name
The average frequency over a specified interval mode allows you to trace the average frequency of
the design (or group of instances in the design) at every specified time interval. You must specify the
time value for the following options in units of 'fs', 'ps', 'ns', 'us' or 'ms'.
• To specify interval size as a number of clock cycles, use the following option:
-num_clock_cycles <integer>
• To specify the reference clock that controls when a clock starts and the length of its period,
use the following option:
-reference_clock <clock_name>
• To specify the name of the flop clock activity waveform output file in ptcl format, use the
following option:
-fca_ptcl_output_file <report_filename>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 35
PowerArtist Tutorial Part I: Power Analysis
• To generate textual report file ('.rpt'), flop clock activity ('.ptcl'), and average flop clock
activity graphs ('_avg.ptcl'), use the following option:
-fca_report_file <report_filename>
• To specify a name for the log file, use the following option:
-fca_log <filename>
CalculateFlopClockActivity \
-activity_file ../data/sim/rtl_analysis/top.fsdb \
-top_instance txrx_tst.top1 \
-start_time 6071580ps \
-finish_time 12135580ps \
-num_clock_cycles 20 \
-reference_clock top.clk \
-fca_ptcl_output_file reports/clock_activity_waveform.ptcl \
-fca_report_file ./$RPT_DIR/fca.rpt \
-fca_log ./$LOG_DIR/fca.log
• Waveforms of flop clock activity and average flop clock activity as a function of time.
• A text report, which includes minimum, maximum, and average counts of flops for which
clocks toggled during an interval expressed as a number and a percentage.
• fca.rpt.txt
This is a text report that provides minimum/maximum/average statistics per clock domain per
specified instances. This is for both flop clock activity and average flop clock activity metrics
(see definitions below). The report includes both a number and a percentage as a function of
total flops. It also reports the total number of flops (bits) for each instance per clock-domain.
• clock_activity_waveform_avg.ptcl
This is a PTCL graph that shows averaged flop clock activity over time for all monitored clocks
and instances. The x-axis is the simulation time and the y-axis is the average clock activity for
the inferred register bits contained in that instance. This differs from 'fca.ptcl' because the
numbers in this file are derated by the total number of flops in the block.
• activity_waveform.ptcl
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
36 of ANSYS, Inc. and its subsidiaries and affiliates.
Running Weighted Toggle Coverage (WTC)
This PTCL graph shows activity over time for all the monitored instances defined with the
'DefineGroup' command.
• activity_waveform.fsdb
This FSDB graph shows activity over time for all the monitored instances defined with the
'DefineGroup' command.
Ansys recommends that you use the two PTCL graphs together to investigate any potential power
bugs. You can view the flop clock activity graphs, both the average flop clock activity graph (bottom)
and the absolute graph (top) through the Waveform Viewer by loading the '*.ptcl' files.
Figure 4.4: Average and Absolute Flock Clock Activity Analysis Waveform in PTCL Format
(One Plot)
Looking at the average flop clock activity (in the bottom graph), you can see that:
• The transmit clock domain 't1_top.clk' is active when the receive clock domain
'r1_top.clk' is inactive and vice-versa.
• The 'pci' clock domain 'top.pci_clk' is always on, indicating that this is a good candidate
for clock gating.
To determine whether you benefit from clock gating 'pci', you should check the absolute waveforms
(in the top graph). You can see that approximately 20 flops are clocked in the receive block
'ut0|top.core1.r1_top.pci_clk' and even more in the transmit block
'ut0|top.core1.t1_top.pci_clk'. This can indicate a power bug.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 37
PowerArtist Tutorial Part I: Power Analysis
To generate the coverage metrics, you need to provide the simulation file settings, type of coverage
analysis of interest and output files to be generated.
Note: max, dynamic, and average are the available WTC calculation metrics.
• To specify the output reports and report format, use the following options:
-coverage_report_file <max/avg report>
-coverage_dynamic_report_file <dynamic report>
-coverage_fsdb_output_file <dynamic output fsdb>
-coverage_weight_report_file <weight report>
-coverage_report_format {csv text both}
• To specify the 'interval_size' for dynamic coverage analysis, use the following option:
-interval_size <value>
Source 'wtc.tcl' to run weighted toggle coverage and generate the corresponding reports:
pa_shell % source ./scripts/wtc.tcl
• Weight Report
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
38 of ANSYS, Inc. and its subsidiaries and affiliates.
Running Weighted Toggle Coverage (WTC)
The 'wtc_weight.rpt.txt' reports the weight of all hierarchical and leaf instances in the
design. An excerpt from the weight report is shown here:
CELL WEIGHT(%) INSTANCE
============= ========
0.2374 TOP
0.00196127 top.sclk1
0.0019383 top.sclk2
0.000967999 top.sclk3
0.000941347 top.udo0
0.000941347 top.udo1
0.000941347 top.udo3
<snip>
The 'wtc_maxavg.rpt' reports the 'max' and 'average' weighted toggle coverage metrics of
all the hierarchical and leaf instances in the design. This report has two sections:
– summary - The summary section has the top-level summary for different categories
(Register, Memory etc)
– detailed - The detailed section reports the metrics at the instance level.
The wtc_dynamic.rpt.txt has the dynamic WTC metrics for the instances in the design. If the
MonitorInstances command is specified, then only the top-level dynamic WTC metrics are reported.
An excerpt from the dynamic report is shown here:
Timeunit: 1e-12
Time Dynamic-GTC(%) Dynamic-ITC(%) Instance
==== ============= ============= ========
6086740.000000 31.6961 31.6961 TOP
6086740.000000 3.3823 15.317 top.core1.t1
6086740.000000 1.65471 7.51194 top.core1.r1
6086740.000000 0.000758828 20.7559 top.core1.t1.s1
6086740.000000 4.18842e-05 0.255037 top.core1.t1.d1
6086740.000000 0.0246748 47.7584 top.core1.t1.l1
6086740.000000 0.0100966 19.3141 top.core1.t1.f1
6086740.000000 0.0087302 50 top.core1.t1.p1
<snip>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 39
PowerArtist Tutorial Part I: Power Analysis
• ITC/GTC Waveform
The 'wtc_dynamic.fsdb' shown here displays the ITC/GTC waveform for all the intervals in
the simulation window:
• Large designs often have several operational modes, such as standby, receiving, and transmitting.
The power consumption for these modes will typically vary as different sections of the chip may be
inactive, or even powered down, in each mode.
You can use a mode description file to enter data or design-specific information that the tool uses
to perform multiple RTL power analyses corresponding to different operational modes of the design.
Use the following variable to specify the power mode(s) to analyze:
pa_set mode_file <mode_file_name>
• Use the following variables to specify the inputs related to simulation activity:
pa_set top_instance top_instance_name
pa_set activity_file <activity_file_name>
You can use the 'GenerateGAF' command for explicit control. This command also provides support for
multi-testbench control. The options used in this tutorial are explained below:
• To specify start and finish times for the simulation window for the average analysis, use the
following options:
-start_time <time>
-finish_time <time>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
40 of ANSYS, Inc. and its subsidiaries and affiliates.
Running Average Power Analysis
• To specify the name of the gaf file, use the following option:
-gaf_file <gaf_filename>
• To specify a name for the log file, use the following option:
-gaf_log <filename>
You can use the 'CalculatePower' command for average power analysis. This command converts
simulation activity data into a global activity file (GAF), runs power analysis, and stores the information
in a power database ('.pdb' file). The GAF is an intermediate file generated when the activity file is
parsed. This allows you to run multiple power analysis and reductions without the runtime overhead
of parsing the simulation file again. The GAF file contains average frequency information for all named
nets and power arcs in the design. The options used in this tutorial are explained below:
• To specify the name of the gaf file, use the following option:
-gaf_file gaf_<filename>
This is needed if the post-layout netlist has inserted scan chains and helps in better net
capacitance modeling at RTL.
• To set the default output load to the specified value, use the following option:
-default_output_load <float>
• To set the default transition time for any net for which slew is not specified, use the following
option:
-default_transition_time <float>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 41
PowerArtist Tutorial Part I: Power Analysis
• To set the default clock transition time, use the following option:
-default_clock_transition_time <double>
• To specify the name of the power database (.pdb) file pointer, use the following option:
-power_db_name <pdb_filename>
• To specify a name for the log file, use the following option:
-calculate_log <filename>
During average power analysis, you can generate a text report file containing the results and clock tree
summary details, which are explained in subsequent sections.
• To specify the average power report file name, use the following option:
-average_report_file <report_filename>
• To control the output of the report file for average analysis, use the following option:
-average_report_options {options}
• To generate a vertical report that provides summary information for the specified list of instances,
use the following option:
-vertical_report_instances {inst1 inst2 ...}
• To generate a cell selection report that helps achieve more accurate power results by analyzing
the cell type used for power analysis, use the following option:
-cell_selection_report <report_filename>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
42 of ANSYS, Inc. and its subsidiaries and affiliates.
Running Fast Power Profiling
-save_clock_trees_netlist true \
-calculate_log ./$LOG_DIR/average_power.log
Source 'average_power.tcl' to run average power analysis and generate the associated reports:
pa_shell % source ./scripts/average_power.tcl
openPDB ./$DB_DIR/average_power.pdb
reportPower -show_ibp -levels 2 -unit mW -out ./$RPT_DIR/reportPower.rpt
reportSummary -out ./$RPT_DIR/reportSummary.rpt
reportCGEfficiency -sort_by clock_power -out ./$RPT_DIR/reportCGEfficiency.rpt
closePDB
To run the 'ProfilePower' command, you need to provide the averaging window, the output fsdb to
generate, the log file, the text report, and the interval size.
• To set the interval size to the number of clock cycles, use the following option:
-profile_num_clock_cycles <integer>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 43
PowerArtist Tutorial Part I: Power Analysis
Source 'profile_power.tcl' to run power profiling and generate the associated reports:
pa_shell % source ./scripts/profile_power.tcl
In this figure, the waveform in red is the average waveform calculated with the '5%' averaging window.
The duration is for the entire simulation window, which is '19us'.
When performing a time-based power analysis, ensure that the '-start_time' and '-finish_time'
options are set to be the leading edge of a clock and the trailing edge of a clock, respectively. You also
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
44 of ANSYS, Inc. and its subsidiaries and affiliates.
Running Time-Based Power Analysis
need to select the interval size used by your analysis. This is controlled by the '-reference_clock'
and '-num_clock_cycles' options.
• To set the interval size as a number of clock cycles, use the following option:
-num_clock_cycles <integer>
• To specify the reference clock that controls when a clock starts and the length of its period, use
the following option:
-reference_clock <clock_name>
• To specify the edge of the clock that defines the start point for the first interval, use the following
option:
-active_edge <auto | positive | negative>
During time-based power analysis, you can generate text-based power reports and waveforms in either
the FSDB format or PowerArtist Tcl (ptcl) format, which is explained in subsequent sections.
• To specify the time-based power text report file name, use the following option:
-time_based_report_file <report_filename>
• To save the power-over-time waveforms in ptcl format, use the following option:
-ptcl_output_file <filename>
• To save the power-over-time waveforms in fsdb format, use the following option:
-fsdb_output_file <filename>
Note: The explanation of the options common to 'average' and 'time-based' power analysis are
not repeated.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 45
PowerArtist Tutorial Part I: Power Analysis
-fsdb_output_file ./$RPT_DIR/time_based_power.fsdb \
-calculate_log ./$LOG_DIR/time_based_power.log
To address these challenges, PowerArtist facilitates 'Fast Time-based Analysis', which provides a run
time speedup of many orders of magnitude over traditional time-based power analysis while keeping
cycle accurate power numbers within a small delta. These faster run times once again enable you to:
Fast Time-based Analysis (FTBA) is an enhanced version of the default time-based analysis. The FTBA
workflow exhibits up to 200X faster performance in generating power waveforms for long vectors.
The tool also supports hierarchical time-based power profiling.
In addition to the FSDB flow, FTBA is enhanced to support the following emulator flows:
• ZeBu flow
• Virtual FSDB flow
The use model for RTL time-based power analysis remains unchanged, and the tool accepts the
following additional inputs for fast time-based power analysis:
• Ensure that the Verdi environment variable 'VERDI_HOME' points to your Verdi installation
path.
• To enable fast time-based analysis, use the following command:
pa_set enable_fast_tba true
By default, the fast time-based analysis runs for the top instance.
• (Optional) To enable hierarchical fast time-based analysis, use the following command:
pa set enable_hier_fast_tba true
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
46 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Power Analysis Results in the PowerArtist Graphical Interface
# fast tba
set flow ftba
pa_set top TOP
pa_set enable_fast_tba true
pa_set reference_clock top.clk
pa_set top_instance txrx_tst.top1
pa_set activity_file ../data/sim/rtl/top.fsdb
pa_set start_time 30ns
pa_set finish_time 1.8ms
pa_set num_clock_cycles 1
pa_set active_edge positive
pa_set default_output_load 1epa_set 15
pa_set default_transition_time 50e-12
pa_set default_clock_transition_time 20e-12
pa_set time_based_report_file ./$RPT_DIR/${flow}.rpt
pa_set fsdb_output_file ./$RPT_DIR/${flow}.fsdb
pa_set calculate_log ./$LOG_DIR/${flow}.log
pa_set analysis_type time_based
CalculatePower
The reports generated and PDB-based queries available in regular time-based power analysis are also
generated and available in fast time-based power analysis.
1. Load the power database named 'average_power.pdb' that was created by the
'average_power.tcl' script.
2. To see the power results in the hierarchy browser, select 'Design > Hierarchy > Colorize by
> Power'. You can also color the power table by selecting Design > Power Table > Colorize
by > Power.
The hierarchy browser now shows the design colored by power as shown in the following
figure:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 47
PowerArtist Tutorial Part I: Power Analysis
The colorizing follows a thermal spectrum. The more power consumed, the hotter the color
(red indicating the most power consumed). The less power consumed, the cooler the tab. The
hierarchy browser is not colored, by default.
1. From the hierarchy browser, click 't1(txchan)' then right-click and select 'Show in Schematic'.
2. Use the '+' and '-' keys to zoom (or do a press-drag-release to zoom) around 't1', as shown in the
following figure:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
48 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Power Analysis Results in the PowerArtist Graphical Interface
3. Dynamic information is displayed just above the schematic. This display changes as you move your
cursor over the elements in the schematic. This display includes information such as instance name,
cell name, parent, static/dynamic/total power, clock gating status, and optimization status. From
this figure, you can see that instance 't1' consumes a total of '11.42 mW' of power.
4. Do 'shift + double-click' the border of 't1' to show a detailed view of its schematic.
5. Do 'shift + double-click' again to return to a view that only shows the primary ports.
If you zoom-in, you can see that the port stubs for single-bit pins are thinner than the port stubs
for bus ports.
7. Click the wire coming from this port that is on the outside of the instance boundary and select
'Schematic > Show Properties' or right-click and select 'Show Properties'.
8. To see all the nets, click the '+' sign next to the 'txdin' pin name.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 49
PowerArtist Tutorial Part I: Power Analysis
This dialog displays the frequency, capacitance source, transition time, and average activity for each
net in the bus. After launching this dialog, if you click different areas in the schematic, the dialog is
updated accordingly. You can use this dialog to view net information for both single-bit ports and
bus ports.
You can also add tabs to this dialog to display other pins, nets, or instances by clicking on the blue
' +' button on the upper left corner of the Properties dialog.
Both the average and time-based reports are divided into sections. Every section provides valuable
information about the power analysis of your design. At the top of the report are the date and
program version, along with values for numerous arguments and parameters.
• Power Reports
These reports are generated by accessing the power database using APSH container commands.
The power database is generated during power analysis.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
50 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding Power Analysis through Text Reports
The categories reported in this section are explained in greater detail in sections that follow.
Note: (G) after either a register or 2-1 mux means this instance is affected
by clock gating.
Note: (F) after model name means power of this instance has been forced by
using SetPower command.
Note: (O) after model name means this instance has been partially/fully
optimized.
Power(Watts)
Component Model Static Dynamic Total
--------- ----- ------ ------- -----
top user 3.84mW 20.1mW 24mW
#b0 connect 0W 0W 0W
#b1 connect 0W 0W 0W
#b2 auto 0W 0W 0W
core1 user 3.84mW 20.1mW 24mW
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 51
PowerArtist Tutorial Part I: Power Analysis
#b0 connect 0W 0W 0W
...
Total internal power 3.84mW 20.1mW 24mW
<snip>
In the report, fully or partially optimized instances are marked with an '(O)' after the model name.
This is similar to gated logic marked with a '(G)' and logic with power set by the 'SetPower'
command marked with an '(F)'.
And for each module, this report provides several pieces of information:
Using the frequency values computed for the ports and the type of power model associated with
the object, PowerArtist can accurately estimate the power consumed by the object.
Among other options, PowerArtist reports enable you to separate static and dynamic power
estimates. The static power is generally independent of the frequency of the object, although for
some modules, such as memories, the static power can depend on the value of control signals,
such as chip select. For example, a ROM can consume a certain amount of static power when active,
and a smaller amount of power in standby mode. PowerArtist computes the amount of time the
ROM is in each mode, and determines the static power based on these modes.
This is available for all flows under Simulation-Based Average Power Analysis and Power Reduction
enabled by the following command:
CalculatePower -analysis_type average
ReducePower
Specify the new pa_set to report per instance power calculation details in CalculatePower
command:
pa_set power_debug_report_instances {list_of_instances}
You can provide a single instance, or a list of instances. The report prints details for a maximum of
five instances at once.
You can also include the wildcard characters '*', '?', and '[]'. The following snippet shows a set of
valid wildcard entries:
*, top.*, top.core1.*, top.*.#r0
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
52 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding Power Analysis through Text Reports
Outputs
The following snippet shows the report file generated when pa_set
power_debug_report_instances is enabled for specified instance(s):
The report file contains breakup of static and dynamic power for each instance(s) specified
under the pa_set.
The following section describes the file and format details of the report:
The following snippet shows different file formats for different types of instances:
– Macro instances:
Instance Name: top.core1.#a0 [top.core1.#a0.#c1.or1_1_0]
Lib_name: hvt.lib
Cell_name: CELL_OR
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 53
PowerArtist Tutorial Part I: Power Analysis
– Vectored instances:
Instance Name: top.core1.#r0 [Index:0, Net: top.core1.net1]
Lib_name: hvt.lib
Cell_name: SDFF_CELL
Instance Type: Register
Total Power: Total_Power [power_of_index0_register_bit]
– MBFF instances:
Instance Name: top.core1.#r0 [Index:0, Net: top.core1.net1]
Lib_name: hvt.lib
Cell_name: SDFF_CELL
Instance Type: Register
Total Power: Total_Power [power_of_index0_register_bit]
Limitations
This version of the feature has the following limitations:
• This feature is available only for Simulation-Based Average Power Analysis and Power
Reduction flow. Time based flow has limitations for this report as printing interval-wise power
data is not feasible.
• If five or more than five instances are specified under the pa_set
power_debug_report_instances {list_of_instances}, the tool reports details
for the first five instances. The following user message is reported:
Note 999: pa_set 'power_debug_report_instances' supports generating power
debug data for maximum five instances. Other instances, if provided,
will be ignored.
• Some instances in the report file may show internal or static power different from power
database (.pdb). Static power mismatches could be observed for registers and mux21 type
of instances and internal power mismatches could be observed for a few combinational
instances.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
54 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding Power Analysis through Text Reports
Power consumed by pads is often a significant fraction of total power and PowerArtist uses specific
models for each pad in a technology to accurately estimate the power. Power is estimated using
the frequency value for the output net, parameters of the pad, and a user-provided value for the
off-chip capacitance driven by the net if it is an output.
top.core1.u1
HIGH_VT 70 99
LOW_VT 30 43
---------------
Total 142
top.core1.a1
HIGH_VT 70 29
LOW_VT 30 12
---------------
Total 41
top.core1.s1
HIGH_VT 70 424
LOW_VT 30 179
---------------
Total 603
<snip>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 55
PowerArtist Tutorial Part I: Power Analysis
Power (Watts)
Net Type Static Dynamic Total
--- ---- ------ ------- -----
top.Pclk ( clk ) Inferred 1.4uW 352uW 353uW
Net properties:
Area : 8.10e-09
Senses : 1
Frequency : 63.2MHz
Transition time : 20ps*
Fanout capacitance : 0F, clock net is a primary input
Wire/Pin Power : 0W, clock net is a primary input
• The hierarchical net name, the type of analysis, and the total power for the clock tree. The
analysis type is 'Instantiated' (it was traced) or 'Inferred' (clock inferencing was done).
• Area occupied by the net.
• Clock senses.
• Frequency of the clock net.
• Transition Time.
• Fanout capacitance of the clock net (split into contributions from wire and pin capacitances).
• Power consumed as the net toggles (split by wire and pin components).
• The wire load model applied to the net (the first entry is the net name, the second entry is
the wire load model applied to that net). If you assigned wire load models to sub-nets of
the clock tree, they are also listed here.
• Descriptions of the instances that are traced as part of the clock tree, which includes the
following:
– Library Model: the Liberty model name.
– Clock Level: the depth in the clock tree for this particular instance
– Driven Net Numbers: the net numbers from the 'Traced nets' section that this instance
drives. Most instances drive one net, but some instances may drive multiple nets. The
power section is split into 'static', 'dynamic', and 'total' just like in the 'Internal Power
Consumption' section of this report.
– Driven by Net Number: the net number that is traced through to get to this particular
instance.
Note: The 'Driven by' net may have Index 0. This means that this is the clock net you
are inferring or tracing.
– Driven Loads: the number of loads this particular instance is driving.
– Traced Instance the full hierarchical instance name (listed last to accommodate a
long name).
Note: If the instance is a leaf buffer that is driving only clock pins, it is marked with
an '(L)' in the 'Clock Level' column.
• Descriptions of each clock net in the design. This section lists every net in the clock tree and
contains the following fields:
– Net Number: this number allows you to figure out the instance driving this net.
– Frequency: the toggling frequency of this net.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
56 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding Power Analysis through Text Reports
– Transition Time: the slew time either back-annotated or calculated by the slew calculator,
the back annotated slew values are annotated with an asterisk. The power portion is split
into 'Pin Power' and 'Wire Power'.
– Wire Capacitance: capacitance determine from a wire load model or a back-annotated
value. In the case of a back-annotated value, the number is annotated with an asterisk to
indicate that it was a user-specified value.
– Pin Cap: the total capacitance of the pins driven by this net.
– Net Wire Power and Net Pin Power : the total power split into pin and wire amounts
– Net: the full hierarchical instance name for this net.
Clock tracing depends only on the order of the clock commands even if frequency is specified,
though you can override this by using the '-frequency_dependent_clock_tracing' option.
This happens even if some clocks have frequency and some do not.
You can optionally honor the duty cycle of the clock multiplexer (mux) select pin and determine
the input clock that is traced to the mux output. The mux and downstream logic are accounted in
the power of the clock that gets traced through the mux.
Additionally, there is a separate section called 'Clock Gating Summary' for every clock and for the
entire design at the end of the 'Clock power consumption' section of the report. See the following
sample:
<snip>
Clock Gating Summary:
---------------------
Clock net: top.Ppci_clk
Number of inferred clock gating cells: 10
Number of registers gated by inferred clock gating cells: 376
Number of registers enhanced gated by inferred clock gating cells: 0
Number of instantiated clock gating cells: 0
Number of registers gated by instantiated clock gating cells: 0
Total number of gated registers: 376
Total number of ungated registers: 76
...
...
Clock Gating Summary:
---------------------
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 57
PowerArtist Tutorial Part I: Power Analysis
Instance: top
Number of inferred clock gating cells: 13
Number of registers gated by inferred clock gating cells: 464
Number of instantiated clock gating cells: 0
Number of registers gated by instantiated clock gating cells: 0
Total number of gated registers: 464
Total number of ungated registers: 229
<snip>
Notes:
• The counts are the total number of register bits and not the number of register instances
(where an entire register bank is one instance).
• The sum of 'Number of gated registers' and 'Number of registers gated by instantiated clock
gating cells' may not be equal to the 'Total number of gated registers'. This is because a register
may have a block-level instantiated clock gate and a local inferred clock gate.
• The 'Total number of gated registers' row includes registers that are gated by inferred clock
gates, instantiated clock gates, or both.
• The 'Total number of ungated registers' row includes those registers that are not gated by
either inferred or instantiated clock gates.
For more information on clock gating, see section 'Setting up Clock Gating for Power Analysis (p. 190)'.
• Name of the net with a fanout that exceeds the limit specified by the 'SetMaxFanout'
command.
• The hierarchical instance being driven by the net.
• The frequency of the net toggles.
• The number of loads.
• A description of the fanout tree. This includes the cells that were used to build up the buffer
tree, the library the cells came from, the counts of the cells, fanout limitations of the cells,
and the power consumed by the cells. The capacitance in the buffer tree is also supplied
because it controls the number of cells inferred.
7. Inferred buffer tree power
=============================
Total dynamic power = 13.4uW
Total static power = 115nW
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
58 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding Power Analysis through Text Reports
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 59
PowerArtist Tutorial Part I: Power Analysis
4.16.1.12. Area
This section reports the width, height, and number of registers and gates for each component. This
section of the report is generated if you use '-average_report_options a' with
'CalculatePower':
8. Area
=======
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
60 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding Power Analysis through Text Reports
For inferred elements, the cell count equals the number of separate instances in the design and
not the total bit width for bundled elements like registers and muxes. For vendor_gates, the cell
count is the number of gates of that type in the design.
This section reports the pins of the RTL instances that exist in the design after netlist optimizations.
Optimized logic is not included. Additionally, for RTL instances, such as registers or multiplexers,
all the bits in the vectored/bundled instance are reported. The numbers match the numbers obtained
from the Cell Selection Report (p. 62) or the reports based on the power database (p. 63) (pdb):
10. Power consumption by model/gate type
========================================
Power(Watts)
Component Model Cell Static Dynamic Total
Count
--------- ----- ------ ------- ------- -----
top 1906 3.89mW 21.1mW 25mW
Register Power 30 15.8uW 3.85mW 3.87mW
Latch Power 0 0W 0W 0W
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 61
PowerArtist Tutorial Part I: Power Analysis
In order to achieve more accurate power results by analyzing the cell type used for power analysis,
PowerArtist generates a cell selection report. The report provides a list of technology library cells that
PowerArtist maps for RTL power estimation and helps you to identify similar cells used in the gate-level
netlist.
• Inferred netlists
• Inferred clock tree and net buffer tree
• Inferred clock gates
• Instantiated netlist elements
In this tutorial, PowerArtist performs power analysis in two modes, the transmit and the receive modes,
and generates the following reports for each mode:
The report shows the mode signal 'txrx_tst.top1.rx_rq', which indicates that power
analysis is performed in the 'receive' mode and the mode signals are set in the mode file. A
sample is shown below:
<snip>
Mode signal: txrx_tst.top1.rx_rq
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
62 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding Power Analysis through Text Reports
The report shows the mode signal txrx_tst.top1.tx_rq, which indicates that power
analysis is performed in 'transmit' mode and the mode signals are set in the mode file. A sample
is shown below:
<snip>
Mode signal: txrx_tst.top1.tx_rq
Global activity file: ./pa_shell_work/top.gaf
Mode file: ./input/txrx.mode
<snip>
You can also view the time spent during mode analysis. This information is available in
'average_report.rpt'. A sample is shown below:
<snip>
Total time in modes: 96%
Global activity file: ./pa_shell_work/top.gaf
Mode file: ./input/txrx.mode
<snip>
The report summarizes the power of each hierarchical instance in the design, starting from the top
module 'top', down to the lowest level of hierarchy '/top/core1/*/*/*' (if '-levels all' is
set). A section of the report is shown below:
Instance: /top
Power Unit: mW
Category Internal Switching Leakage Total
---------------------------------------------------------
register 3.851 0.000 0.016 3.867
latch 0.000 0.000 0.000 0.000
logic 0.349 0.013 0.023 0.385 (+ibp)
bbox 0.000 0.000 0.000 0.000
memory 15.909 0.000 3.806 19.715
pad 0.000 0.000 0.043 0.043
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 63
PowerArtist Tutorial Part I: Power Analysis
In this report, power is reported for the 'register', 'latch', 'logic', 'bbox', 'memory', 'pad',
and 'clock' categories. For each category, power is reported in four columns:
This command generates a comprehensive summary of the design, its power, and activity. The
generated report is shown below:
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Design: /top
Category #insts #bits #eff_bits area pwr/stat pwr/dyn pwr/load
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
pad 287 287 287 2.32e-06 4.28e-05 0.00e+00 0.00e+00
memory 20 640 640 3.92e+06 3.81e-03 1.59e-02 0.00e+00
register 30 694 693 6.87e+03 1.58e-05 3.85e-03 0.00e+00
MUX 44 938 752 2.81e+03 2.10e-06 2.60e-04 0.00e+00
ALU 12 296 296 2.05e+03 1.97e-05 4.67e-05 0.00e+00
DPX 7 58 58 1.60e+02 2.27e-07 1.48e-07 0.00e+00
Logic 196 196 196 1.95e+03 5.30e-07 4.27e-05 1.32e-05
clock 72 72 72 4.35e+01 6.34e-07 2.50e-05 9.96e-04
ibp n/a n/a n/a n/a 1.15e-07 1.34e-05 1.31e-05
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Total 668 3181 2994 3.93e+06 3.89e-03 2.01e-02 1.02e-03
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Primary clocks = 3, #clock nets = 121, 0-freq nets = 38.02%
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
freq #flops %flops cg/pct #icgcs #buffs #combs | primary-clock-net
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
6.32e+07 239 34.49 34.05% 3 4 17 | /top/Ppci_clk
6.32e+07 452 65.22 64.79% 10 21 17 | /top/Pclk
0.00e+00 2 0.29 0.29% 0 0 0 | /top/Ptck
<snip>
In this report, instance, bit-width, area, and power information for the following is reported:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
64 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding Power Analysis through Text Reports
Additionally, there is one row for each clock domain, showing the number of flop-bits, percentage
of total flop-bits, clock gating percentage, number of ICGCs, and number of clock buffers.
This command generates a comprehensive efficiency report of all inferred and instantiated clock
gates in the design. This command also reports gated registers and latches with the part select
associated with the clock gating. The option '-sort_by clock_power' is used to sort the
information by 'clock power'.
The first line in the report is the heading specifying the various columns of the information table.
The default columns are as follows:
Column Description
Name
Inst Hierarchical Instance name
Name
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 65
PowerArtist Tutorial Part I: Power Analysis
Column Description
Name
Gated Inferred or Instantiated
Type
En Duty Enable duty
Cum En Cumulative enable efficiency
Eff
Dwns Clk Downstream clock power
Power
Pr Clock Primary clock
En Eff Enable efficiency
En net Enable net name
File RTL file path
Line Line number corresponding to the ICGC logic in the RTL file
In Freq Input frequency
Out Freq Output frequency
The default sorting order of the report is 'clock_power'. If there are multiple entries with the
same ' clock_power', the instance name ('Inst Name') is used for a secondary level of sorting
and reporting is in the alphabetical order of the instance names.
Note: The tool does not support calculation of CGE metrics for macros with multiple clock pins.
This is because gating conditions and relations between input-clock-output pins are not
straightforward to define for a cell with multiple clock pins.
• A report file containing an ASCII representation of the power analysis results ('text' format).
A text report is generated if you specify '-time_based_report_file
<report_filename>' with 'CalculatePower'. For a sample time-based text power report,
go to the 'reports' directory and open 'time_based_power.rpt'. The various sections
in the report are explained in the next sections.
• Waveforms in either the FSDB format or PowerArtist Tcl-based format that holds the current
and power-over-time information you requested. This includes peak power per category and
the time at which they were computed.
4.16.5.1. Header
A 'header' section provides the following information:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
66 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding Power Analysis through Text Reports
• Summary information on the simulation run including simulation duration, start, and finish
times.
• The power supply values used.
• The initial input transition time.
• The monitor file name.
• The wire load mode and model information.
For each instance specified by the 'MonitorInstances' command, this section reports the
following:
– Average power for all children of the instance (or just the instance itself if it were a
cell in a library) broken into static, dynamic, and total power.
– The maximum power in Watts.
– One or more time steps in your simulation that the maximum power occurred.
– The instance name.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 67
PowerArtist Tutorial Part I: Power Analysis
NOTE: ellipsis at the end of line means that there are more time stamps,
which can be displayed using switch -max_time_stamps.
<snip>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
68 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Power Analysis Results
Use PowerArtist concurrently with RTL simulation to analyze power and identify hot spots. If
the design consists of mixed RTL and gate-level models, use PowerArtist and apply simulation
data as it becomes available for individual modules or sub-systems to improve the analysis
accuracy for those blocks.
• After synthesizing
After using PowerArtist at the RT-level to decide among design alternatives, you can start
synthesizing portions of your design. Since logic synthesis can substantially restructure control
logic to minimize area or meet timing constraints, you should repeat power analysis using
post-synthesis information. This can be done on a mixed RTL and gate-level design or on a
fully synthesized gate-level netlist.
• The peak power and current information can be used during physical implementation to size
the power grid. By selecting various hierarchical instances in your design that correspond to
physical blocks, you get a good idea of the power grid needs on a block-by-block basis.
• The total peak power and current values give you some idea of the power supply needs of
your chip.
• By examining areas of the waveform that have large swings in power or current from one time
step to the next, you can ascertain if there are any di/dt issues.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 69
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
70 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 5: PowerArtist Tutorial Part II: Power
Reduction
5.1. Introduction
This tutorial showcases how to perform RTL power reduction for your design using PowerArtist and
highlights various steps involved starting from design elaboration, reduction analysis, generation of
some useful power reduction reports, and rewriting the RTL.
Note: The PowerArtist tutorials are a feature demonstrator and are not intended as an example on how
to set up PowerArtist on a new design.
Tutorial Organization
The following subjects are covered in this chapter:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 71
PowerArtist Tutorial Part II: Power Reduction
Directory Description
Name/FileName
README Describes the basic flow for running this tutorial.
input Contains the following file:
txrx.vc - Is the Verilog startup file that tells the HDL elaborator
which Verilog files must be loaded for your design.
pa_shell.ini Is the initialization file that sets the 'pa_shell' prompt and is used
to customize the 'pa_shell' settings at multiple levels.
run.tcl A Tcl script to run the reduction tutorial in batch mode.
scripts Tcl scripts called by 'run.tcl' that perform various sub-tasks related
to power analysis (such as,design elaboration and vector analysis)
and reduction analysis).
cleanall A script to remove all the files created while running the 'reduction'
tutorial.
The main steps in the power reduction flow are controlled by the following commands:
1. Elaborate
Compiles the HDL design description into an internal binary format called the scenario file.
2. ReducePower
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
72 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding the Power Reduction Tutorial Steps
Understand the reports generated after reduction analysis and schedule changes.
2. Set up common design identifiers and directories for log and report files:
pa_shell $ source ./scripts/setup.tcl
6. Set up RTL power - clocks, multi Vt, design, and library database:
pa_shell % source ./scripts/power_setup.tcl
These steps are explained in detail in the next sections. You can also run all the steps via a single tcl
file (run.tcl):
% pa_shell -tcl run.tcl
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 73
PowerArtist Tutorial Part II: Power Reduction
This step is identical to the step explained in detail in the Running the Setup (p. 24) section of the
Power Analysis tutorial.
Type 'pa_shell' to launch the PowerArtist shell and then source 'setup.tcl' to create the required
directories:
pa_shell % source ./scripts/setup.tcl
This step is identical to the step explained in detail in the Reading the Library Files (p. 24) section
of the Power Analysis tutorial.
Source 'libraries.tcl' to read the liberty files and create a library database:
pa_shell % source ./scripts/libraries.tcl
This step is identical to the step explained in detail in the Design Elaboration (p. 25) section of Power
Analysis tutorial.
This step is identical to the step explained in detail in the The ReadSDC Command (p. 26) section
of the Power Analysis tutorial.
This step is identical to the step explained in detail in the Setup for Clock Tree and Clock Gate
Inferencing (p. 27) section of the Power Analysis tutorial.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
74 of ANSYS, Inc. and its subsidiaries and affiliates.
Specifying the Memory
This step is identical to the step explained in detail in the Setup for Capacitance Estimation (p. 28)
section of the Power Analysis tutorial.
Source 'power_setup.tcl':
pa_shell % source ./scripts/power_setup.tcl
4. Mixed-Vt Setup
This step is identical to the step explained in detail in the Mixed-VT Setup (p. 29) section of the
Power Analysis tutorial.
Source 'power_setup.tcl' to specify mixed-vt libraries, threshold, and mixed-vt percentage for
cell selection:
pa_shell % source ./scripts/power_setup.tcl
PowerArtist analyzes your simulation input file by using the information in your 'DefineMemory'
commands to:
You can also use the 'DefineMemActivityThreshold' command to specify the number of clock cycles
during which a memory (of a given type and size) must maintain a stable state ('1' or '0') for memory
splitting. In addition to the MSB/LSB of a memory address maintaining a stable state, some activity must
also happen on other address bits. Therefore, this count is the count of clock cycles where there is
activity on other address bits. For example, if the MSB/LSB address is in state '0' for 100 clock cycles,
but in those 100 cycles, there is activity on other address bits for 10 cycles, this would be equivalent
to a threshold value of '10'.
Note: If you do not specify the 'DefineMemActivityThreshold' command, PowerArtist uses their default
values.
• To specify a tcl list of the logical library names, use the following option:
-library {lib_name1 lib_name2 ...}
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 75
PowerArtist Tutorial Part II: Power Reduction
• To define the Tcl list of ports as access enable ports that indicate whether a read or write operation
will occur, use the following option:
-access_enable {access_enbl_port_name1 access_enbl_port_name2 ...}
• To define the Tcl list of ports as read address ports, use the following option:
-read_address {read_address_port1 read_address_port1 ...}
• To define the Tcl list of ports as write address ports, use the following option:
-write_address {write_address_port1 write_address_port1 ...}
• To define the Tcl list of ports as input and output pins carrying data ports, use the following
option:
-data {pin_name1 pin_name2 ...}
• To define the Tcl list of ports as memory enable or select ports, use the following option:
-memory_enable {mem_enbl_or_sel_port1 mem_enbl_or_sel_port2 ...}
• To define the Tcl list of cells as memory cells, use the following option:
-cell {cell_name2 cell_name2 ...}
• To specify the number of clock cycles for which the address bus must be stable, use the following
option:
-num_clocks <num_clock_cycles>
• To specify the type of memory to which the given threshold (clock cycles) apply, use the following
option:
-mem_type <RAM | ROM>
• To specify the size of the memory to which the given threshold (clock cycles) applies, use the
following option:
-mem_size <word_x_width>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
76 of ANSYS, Inc. and its subsidiaries and affiliates.
Multi-port RAM Support
# Define the length of a stable address as 1 clock cycle for RAMs of size 256x32 and 512x32
DefineMemActivityThreshold -num_clocks 1 -mem_type RAM -mem_size 256x32
DefineMemActivityThreshold -num_clocks 1 -mem_type RAM -mem_size 512x32
Support for multi-port RAM is also available. Multi-port RAM support means recognizing multiple (more
than one) read and write ports from a two-dimensional array. This is enabled by setting the following
variable to 'true':
pa_set elaborate_infer_multi_port_ram <true | false>
Specifying this variable ensures that power numbers are reported under the 'memory' category.
No additional options/steps are required to enable to this support in the power analysis flow.
In power reduction, multi-port inferred regfile (register file) support is added to the 'Gated
Memory Clock (GMC)' PowerBot. For this support, 'redundant write clock cycles' are
identified by the PowerBot and then reduced power is calculated for multi-port inferred regfiles.
Consider the following sample RTL:
// clk1 controls writing on both port1 and port2;
// clk2 controls reading on both port1 and port2;
===================================================
module top (clk1, clk2, wen, waddr1, waddr2, wdata1, wdata2,
raddr1, raddr2, rdata1, rdata2);
parameter ADDR_BITS = 3 ;
parameter DATA_SIZE = 16 ;
parameter TOTAL_ADDR_WORDS = 8 ;
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 77
PowerArtist Tutorial Part II: Power Reduction
always@(posedge clk1)
if (wen)
myRegF[waddr1] <= wdata1 ;
always@(posedge clk1)
if (wen)
myRegF[waddr2] <= wdata2 ;
always@(posedge clk2)
if (!wen)
rdata1 <= myRegF[raddr1] ;
always@(posedge clk2)
if (!wen)
rdata2 <= myRegF[raddr2] ;
endmodule
The following is a schematic representation of the RTL, which is elaborated to model a multi-port
regfile:
The schematic representation shows that the 'read' operations from the regfile are not synchronized
by any clock in the regfile. The 'read' data is stored in two flip-flops, which are driven by clocks outside
the 'regfile'. Therefore, only the 'write' clocks are important to calculate the reduced power of a regfile
instance. PowerArtist calculates the 'redundant write cycles' for such regfiles.
The following types of clock cycles are recognized for each clock in the inferred regfile:
The updated results are available in the GMC opportunities section in both the text report and GUI.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
78 of ANSYS, Inc. and its subsidiaries and affiliates.
Running Power Reduction
You can use the 'GenerateGAF' command for explicit control. The options used in this tutorial are
explained below:
• To enable the command to perform reduction analysis, use the following option:
-gaf_enable_reduction_data true
• To specify start and finish times for the simulation window for the average analysis, use the
following options:
-start_time time
-finish_time time
• To specify the name of the '.gaf' file, use the following option:
-gaf_file <gaf_filename>
• To specify a name for the log file, use the following option:
-gaf_log <filename>
Block Activity Ranking (BAR) performs hierarchical analysis and identifies block-level clock and data
gating opportunities in the design. BAR analyzes port activities of all the blocks in the design on a per
clock domain basis and presents the results in text and comma-separated value (CSV) reports. To
generate the report, use the following command:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 79
PowerArtist Tutorial Part II: Power Reduction
Use the 'ReducePower' command for power reduction with the required arguments. The options used
in this tutorial are explained below:
• To specify the name of the '.gaf' file, use the following option:
-gaf_file <gaf_filename>
• To control whether reduction opportunities are allowed to cross hierarchical boundaries, use the
following option:
-reduction_hierarchy full
• To disable read address stability based gating on the memories in the design, use the following
option:
-reduction_memory_stability_gating true
• To specify the logical liberty library name in which the power analyzer searches for wire load
models, use the following option:
-wireload_library hvt
• To set the default output load to the specified value, use the following option:
-default_output_load float
• To set the default transition time for any net for which slew is not specified, use the following
option:
-default_transition_time float
• To set the default clock transition time, use the following option:
-default_clock_transition_time double
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
80 of ANSYS, Inc. and its subsidiaries and affiliates.
Running Power Reduction
This is needed if the post-layout netlist has inserted scan chains and helps in better net
capacitance modeling at RTL.
• To overwrite the existing power database ('.pdb') file, use the following option:
-reduction_overwrite_power_db true
• To specify the name of the power database ('.pdb') file, use the following option:
-power_db_name <pdb_filename>
• To generate power database schematics for the clock trees in the design, use the following
option:
-save_clock_trees_netlist true
• To specify a name for the log file, use the following option:
-reduction_log <filename>
During power reduction, you can generate top level power summary, design statistics, and other reports.
The reports are explained in subsequent sections and the report options used in this tutorial are explained
below:
• To specify the power reduction report file name, use the following option:
-reduction_report_file <report_filename>
• To generate an additional 'Clock Gating by Instances' section in the clock gating report, use the
following option:
-reduction_report_clock_gating_by_instance true
• To generate the clock gating enable efficiency power report, use the following option:
-reduction_report_clock_gating_enable_efficiency true
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 81
PowerArtist Tutorial Part II: Power Reduction
Use the following process to review your reduction results and, if necessary, modify the scheduled
changes.
1. Launch the GUI from the Unix prompt by using the following command:
PowerArtist -pdb reduce_power.pdb
2. Expand the modules in the hierarchy browser left-hand pane by clicking the '+' icons.
3. Select 'top(top)' in the hierarchy browser to populate the power table in the right-hand pane.
4. Select 'Design > Hierarchy > Colorize By > Power'. The hierarchy is colorized for power, as shown
in the following figure:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
82 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Power Reduction Results in the PowerArtist Graphical Interface
5. From the main menu, click 'View' and notice the last three menu items. Each of these menu items
opens a unique dialog that is optimized to show the results of particular PowerBots:
• Linter Power Reductions: Displays linter PowerBots that include Clock Enable Condition
(CEC) Linter (p. 336), Memory Power (MEM) Linter (p. 326), Register Power (REG) Linter (p. 334),
and MUX Power (MUX) Linter (p. 327).
• Prism Reductions: Displays reductions found by the Prism (p. 298) PowerBot. To review sample
Prism results, see Reporting Results (p. 300).
Note: In the 'Simple' and 'Linter' reduction dialogs, the opportunities use the acronyms for the PowerBots
instead of their full names, such as 'GMC' instead of 'Gate Memory Clock'.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 83
PowerArtist Tutorial Part II: Power Reduction
Notes:
• Data shown in gray text is summarized data that consists of multiple parts. When you expand
each entry by clicking the '+' signs, the values are displayed in black text.
• The registers are displayed as either vectors or as a concatenated list of scalars.
For example, if you expand 'pci > LNR > pci_dout[63:0] at line 58', you see that there is one instance
of this change, as shown in the following figure:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
84 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Power Reduction Results in the PowerArtist Graphical Interface
Note: You can expand the width of the 'Module/Reduction' column by dragging the right field separator
and see all the text in the column, as shown in the figure above.
If you right-click any entry, a menu displays as shown in the following figure:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 85
PowerArtist Tutorial Part II: Power Reduction
If you are on an instance-level entry, this menu allows you to cross-probe. For example, you can
cross-probe to the hierarchy display, schematic, or source and to trace cones of logic (upstream or
downstream).
Note: The disabled items on this menu are available for instance-level entries only.
The two right-most columns 'Accept' and 'Rewrite?', help you manage decisions on whether or
not to accept a particular reduction opportunity and if so, to implement them manually or
automatically.
• If you click the 'Help' button before clicking on any of the results, you see the 'Reduction Index'.
This page lists each of the PowerBots on this dialog. From here, you can click any of the links
to get information on a specific PowerBot.
• If you first click a row in the reduction results and then click the 'Help' button, you see the
help pages for that specific PowerBot.
For example, if you click an 'LNR' line in the reduction results, and then click the 'Help' button,
you see a detailed help page for the 'Low activity non-enabled register', as shown
in the following figure:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
86 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Power Reduction Results in the PowerArtist Graphical Interface
Figure 5.5: Sample Context-Sensitive Help Page for the LNR PowerBot
The context-sensitive help is also available in the 'Linter Reductions' and 'Prism' dialogs.
• the magnifying glass icon (or just hit the 'Enter' key) to perform the filtering.
or
1. On the 'Simple Reductions' dialog, in the 'Match:' field, select Mod Saved Total from the
first pull-down and greater than from the second.
2. Enter '170uW' and click the icon. This filters out all line-level reductions that do not reduce
power by at least '170uW'.
The following figures show the results before and after the filtering is applied:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 87
PowerArtist Tutorial Part II: Power Reduction
The triangle on the far right allows you to do more complex filtering. You can create boolean
combinations of filters using the '+' and '-' symbols.
Click any column header to sort the results in either ascending or descending order. To
rearrange the column headers, select a header and drag it left or right using the mouse.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
88 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Power Reduction Results in the PowerArtist Graphical Interface
4. Click the icon to cancel the filtering and re-display all results.
This dialog provides a list of wasted power results for each linter PowerBot.
2. Navigate to an instance in the 'CEC' (Clock Enable Condition Linter) results line. You can click the
'+' symbols to move down one level at a time. Alternately, you can select 'View > Expand All To
Instances' or 'Expand Selected To Line Instances' (if you have selected multiple lines).
3. Select an instance line. Select 'Auto Size Column' from the right-click menu on the 'Module/Linter'
header to display the full name of the instance.
4. Click the 'Detail' tab in second pane to see more details of the instance you selected, as shown
in the following figure:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 89
PowerArtist Tutorial Part II: Power Reduction
Figure 5.9: CEC Linter Power Reduction Results with Detail Tab Displayed
5. To accept all linter reductions, click 'Linters > Mark All Accepted'. The 'Accepted Savings' line in
the bottom pane of this dialog displays the wasted power savings you get with these changes.
Note: You need to manually implement all the wasted power savings opportunities listed in this
dialog.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
90 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding Power Reduction through Text Report
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 91
PowerArtist Tutorial Part II: Power Reduction
Core Core
Core Techniques Dynamic Saving Total Saving
----------------------------------------------------------------------------
Datapath operator isolation : 1.02uW 0.09% 954nW 0.09%
MUX Power Linter : 39.7pW 0.00% 39.7pW 0.00%
Register Power Linter : 43.6nW 0.00% 43.6nW 0.00%
Clock Enable Condition Power Linter : 4.73uW 0.44% 4.73uW 0.43%
Low activity non-enabled register :
Auto-accepted (width <= 16bits) : 9.92uW 0.92% 9.89uW 0.90%
Potential : 98.5uW 9.08% 98.2uW 8.99%
Observability Don't Care :
Auto-accepted : Topology based auto-accept#
Strengthened : 0W 0.00% 28.9nW 0.00%
Potential : 0W 0.00% 28.9nW 0.00%
Low activity enabled register :
Auto-accepted (width <= 16bits) : 4.81uW 0.44% 4.8uW 0.44%
Potential : 4.81uW 0.44% 4.8uW 0.44%
Memory Memory
Memory Techniques Dynamic Saving Total Saving
----------------------------------------------------------------------------
Split memory words : 3.19mW 25.66% 3.52mW 21.42%
Gate Memory Clock :
Auto-accepted : 6.39mW 51.38% 6.39mW 38.93%
Potential : 6.39mW 51.38% 6.39mW 38.93%
----------------------------------------------------------------------------
Notes:
• The local explicit clock enable ('lec') information describe the savings when running standard
synthesis clock gating using constraints like 'minimum bit width'. PowerArtist constraints
information explains what you may save if you supply the generated constraint file to your
synthesis tools to further eliminate registers that may meet physical constraints but cannot
save enough power to warrant clock gating them.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
92 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding Power Reduction through Text Report
• The low activity non-enabled register ('lnr') information describes what you save given the
LNR constraints you supplied that are automatically accepted for rewrite versus the total
potential savings you get if all registers were considered.
• The Prism ('prism') information describes what you save given the constraints you supplied
that were automatically accepted for rewrite versus the most you can save if you create the
missing optimal enables. Comparing these two results indicates how far you are from reaching
the maximum you can save given the simulation data you supplied.
The following reports are generated and saved in the 'reports' directory:
For complete details of the report named 'reportPower.rpt', refer to The 'reportPower'
Command (p. 63) section.
For complete details of the report named 'reportSummary.rpt', refer to The 'reportSummary'
Command (p. 64) section.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 93
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
94 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 6: PowerArtist Tutorial Part III: Advanced
Features
6.1. Introduction
This chapter showcases the following advanced features of PowerArtist:
Note: The PowerArtist tutorials are a feature demonstrator and are not intended as an example on how
to set up PowerArtist on a new design.
This tutorial showcases how to perform vectorless power analysis and reduction on an RTL design using
PowerArtist. The tutorial focuses on setting vectorless activity for key signals in the design. These include
the frequency and duty cycle of clocks, primary inputs, sequential elements (such as flops and memories),
and additional control signals.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 95
PowerArtist Tutorial Part III: Advanced Features
Directory Description
Name/FileName
README Describes the basic flow for running this tutorial.
input Contains the following files:
pa_shell.ini Is the initialization file that sets the 'pa_shell' prompt and is used to
customize the 'pa_shell' settings at multiple levels.
run.tcl A Tcl script to run the vectorless power analysis and reduction tutorial
in batch mode.
scripts Tcl scripts called by 'run.tcl' that perform various sub-tasks related
to power analysis and reduction (such as, design elaboration, creating
a vectorless activity file, vectorless power analysis, and vectorless power
reduction).
cleanall A script to remove all the files created while running the 'vectorless'
tutorial.
The main steps in the vectorless flow are controlled by the following commands:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
96 of ANSYS, Inc. and its subsidiaries and affiliates.
Vectorless Power Analysis and Reduction
1. Elaborate
Compiles the HDL design description into an internal binary format called the scenario file.
Performs average power analysis on your design using vectorless activity file.
3. ReducePower
2. Set up common design identifiers and directories for log and report files:
pa_shell $ source ./scripts/setup.tcl
6. Set up RTL power - clocks, multi Vt, design, and library database:
pa_shell % source ./scripts/power_setup.tcl
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 97
PowerArtist Tutorial Part III: Advanced Features
These steps are explained in detail in the next sections. You can also run all the steps via a single tcl
file (run.tcl):
% pa_shell -tcl run.tcl
Type 'pa_shell' to launch the PowerArtist shell and then source the following files:
pa_shell % source ./scripts/setup.tcl
pa_shell % source ./scripts/libraries.tcl
pa_shell % source ./scripts/elaborate.tcl
pa_shell % source ./scripts/read_sdc.tcl
Go to 'input' and open 'idle.vaf', which represents idle operation mode. An excerpt is shown
here:
set top rxchan
SetStimulus -port $top \
-signal_type {primary_input} \
-activity 0
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
98 of ANSYS, Inc. and its subsidiaries and affiliates.
Vectorless Power Analysis and Reduction
Note: The 'input' directory contains another file 'maxpower.vaf', which represents high activity
switching mode.
To specify the vectorless activity file as the design input file (instead of a simulation-based activity
file - FSDB, VCD, or SAIF), use the following command:
-vectorless_input_file <vaf_file_name>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 99
PowerArtist Tutorial Part III: Advanced Features
To specify the vectorless activity file as the design input file (instead of a simulation-based activity
file - FSDB, VCD, or SAIF), use the following command:
-vectorless_input_file <vaf_file_name>
Note: In the above excerpt, the vectorless activity file is specified as the design input file (instead of
a simulation-based activity file - FSDB, VCD, or SAIF) to obtain accurate power numbers.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
100 of ANSYS, Inc. and its subsidiaries and affiliates.
Gate-level Power Analysis
The report 'average_power.rpt' is similar to the report generated during average power analysis.
Refer to the Average Power Analysis Report (p. 50) section for complete details of the report.
The report 'reduce_power.rpt' is similar to the report generated during power reduction. Refer
to the Power Reduction Report (p. 91) section for complete details of the report.
The report 'reduce_power_cg.rpt' is similar to the clock gating report generated during power
reduction. Refer to the Clock Gating Report (p. 356) section for complete details of the report.
The reports described in this section are generated by accessing the power database (generated
during power reduction) using APSH container commands. The reports are similar to the
corresponding reports generated during power analysis.
For complete details of the report named 'reportPower.rpt', refer to The 'reportPower'
Command (p. 63) section.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 101
PowerArtist Tutorial Part III: Advanced Features
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
102 of ANSYS, Inc. and its subsidiaries and affiliates.
Gate-level Power Analysis
This section highlights only those inputs that are unique to this tutorial and highlights various steps
involved starting from design elaboration to gate-level power verification using activity analysis (with
or without back-annotated parasitics), and finally generation of useful power analysis reports.
6.3.2.1. Understanding the Gate-level Power Analysis with Gate Stimulus Flow
Running gate-level power analysis with a simulation activity file is a simple process, as shown by
the following figure:
The main steps in this flow are controlled by the following commands:
1. Elaborate
Compiles the HDL design description into an internal binary format called the scenario file.
2. GenerateActivityWaveforms
Analyzes the activity file and produces waveform files representing the activity in your
design.
3. CalculatePower
• -analysis_type average - performs average power analysis.
• -analysis_type time_based - performs time-based power analysis.
2. Set up common design identifiers and directories for log and report files:
pa_shell $ source ./scripts/setup.tcl
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 103
PowerArtist Tutorial Part III: Advanced Features
6. Set up gate-level power - clocks, wire capacitance, design, and library database:
pa_shell %source ./scripts/power_setup.tcl
These steps are explained in detail in the next sections. You can also run all the steps via a single
tcl file (run_with_gate_activity.tcl):
pa_shell -tcl run_with_gate_activity.tcl
Type 'pa_shell' to launch the PowerArtist shell and then source the following files:
pa_shell % source ./scripts/setup.tcl
pa_shell % source ./scripts/libraries.tcl
pa_shell % source ./scripts/elaborate.tcl
pa_shell % source ./scripts/read_sdc.tcl
pa_shell % source ./scripts/power_setup.tcl
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
104 of ANSYS, Inc. and its subsidiaries and affiliates.
Gate-level Power Analysis
To specify the scenario file, the following command has been included:
-scenario_file <scenario_filename>
To run average power analysis on a gate-level netlist using gate-level stimulus, the following
command has been included:
pa_set gate_level_netlist true
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 105
PowerArtist Tutorial Part III: Advanced Features
To run time-based power analysis on a gate-level netlist using gate-level stimulus, the following
command has been included:
-gate_level_netlist true
6.3.3.2. Understanding the Gate-level Power Analysis with RTL Stimulus Flow
Running gate-level power analysis with a simulation activity file is a simple process, as shown by
the following figure:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
106 of ANSYS, Inc. and its subsidiaries and affiliates.
Gate-level Power Analysis
The main steps in this flow are controlled by the following commands:
1. Elaborate
Compiles the HDL design description into an internal binary format called the scenario file.
2. Set up common design identifiers and directories for log and report files:
pa_shell $ source ./scripts/setup.tcl
7. Read the name mapping file to map RTL activity to gate netlist:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 107
PowerArtist Tutorial Part III: Advanced Features
These steps are explained in detail in the next sections. You can also run all the steps via a single
tcl file ('run_with_rtl_activity.tcl'):
% pa_shell -tcl run_with_rtl_activity.tcl
Type 'pa_shell' to start the PowerArtist shell and then source the following files:
pa_shell % source ./scripts/setup.tcl
pa_shell % source ./scripts/libraries.tcl
pa_shell % source ./scripts/elaborate.tcl
pa_shell % source ./scripts/read_sdc.tcl
pa_shell % source ./scripts/power_setup.tcl
You can generate a name mapping file using third party formal verification tools. Then, you
can use this script to enable PowerArtist to read the name mapping file.
Source 'read_map_file.tcl' to map RTL nets names to gate-level net names and enable
name mapping:
pa_shell % source ./scripts/read_map_file.tcl
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
108 of ANSYS, Inc. and its subsidiaries and affiliates.
Gate-level Power Analysis
Note: Contact your local support AE for the Application Note of this AE-ware.
To run power analysis on a gate-level netlist using an RTL stimulus, use the following commands:
pa_set use_rtl_sim_data true
pa_set gate_level_netlist true
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 109
PowerArtist Tutorial Part III: Advanced Features
PowerArtist allows you to perform average power analysis using UPF/CPF to estimate the power of
power gated designs, without requiring low power simulations. Time-based power analysis in PowerArtist
enables users to analyze the power profile of various power domains.
Designers can also ensure that the power saved by power management techniques is more than the
power that would be consumed by cells like isolation cells and retention cells after implementation.
The following tutorials demonstrate the use of UPF and CPF commands for power analysis using
PowerArtist:
Directory Description
Name/FileName
README Describes the basic flow for running this tutorial.
input Contains the following file:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
110 of ANSYS, Inc. and its subsidiaries and affiliates.
UPF/CPF-based Power Analysis
Directory Description
Name/FileName
txrx.vc - Is the Verilog startup file that tells the HDL elaborator
which Verilog files must be loaded for your design.
pa_shell.ini Is the initialization file that sets the 'pa_shell' prompt and is used
to customize the 'pa_shell' settings at multiple levels.
run_cpf.tcl A Tcl script to run average power analysis using a CPF file in batch
mode.
run_upf.tcl A Tcl script to run average power analysis using a UPF file in batch
mode.
scripts Tcl scripts called by 'run.tcl' that perform various sub-tasks
related to power analysis (such as, design elaboration, specifying
UPF constraints, and average power analysis).
cleanall A script to remove all the files created while running the 'upf_cpf'
power analysis tutorial.
Domains are defined for 'PD_TOP' and 'PD_RX', supply nets 'VDD' and 'VSS' are used for connections,
'PD_TX' is not shown in the figure. You can selectively switch the supply on and off using power
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 111
PowerArtist Tutorial Part III: Advanced Features
switch ['SW'] as shown in the figure. Retention strategy is defined for 'PD_RX' and 'PD_TX', which is
used to retain the state of power in which the cell was before shutting it off/on. You can also define
isolation strategies to isolate power-off domains from powered-on domains.
The main steps in this flow are controlled by the following commands:
1. Elaborate
Compiles the HDL design description into an internal binary format called the scenario file.
2. Set up common design identifiers and directories for log and report files:
pa_shell $ source ./scripts/setup.tcl
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
112 of ANSYS, Inc. and its subsidiaries and affiliates.
UPF/CPF-based Power Analysis
6. Set up RTL power - clocks, multi Vt, design, and library database:
pa_shell %source ./scripts/power_setup.tcl
These steps are explained in detail in the next sections. You can also run all the steps via a single
tcl file (run_upf.tcl):
% pa_shell -tcl run_upf.tcl
Type 'pa_shell' to launch the PowerArtist shell and then source the following files:
pa_shell % source ./scripts/setup.tcl
pa_shell % source ./scripts/libraries.tcl
pa_shell % source ./scripts/elaborate.tcl
pa_shell % source ./scripts/read_sdc.tcl
pa_shell % source ./scripts/power_setup.tcl
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 113
PowerArtist Tutorial Part III: Advanced Features
• To specify the logical liberty library name in which the power analyzer searches for the wire
load models, use the following command:
pa_set wireload_library power_gate
This is useful when reading multiple libraries that can contain wire load models.
• To read the power constraints specified in the UPF file and enable UPF-based average power
analysis, use the following command:
-upf_in_file <upf_file_name>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
114 of ANSYS, Inc. and its subsidiaries and affiliates.
UPF/CPF-based Power Analysis
Nominal operating conditions are set with specified voltages, and the power supply and ground nets
are provided using the CPF file. PowerArtist can perform power analysis (average or time-based) using
CPF.
Note: You can use PowerArtist's proprietary commands with CPF commands but cannot use CPF and
UPF commands together.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 115
PowerArtist Tutorial Part III: Advanced Features
The main steps in this flow are controlled by the following commands:
1. Elaborate
Compiles the HDL design description into an internal binary format called the scenario file.
2. Set up common design identifiers and directories for log and report files:
pa_shell $ source ./scripts/setup.tcl
6. Set up RTL power - clocks, multi Vt, design, and library database:
pa_shell %source ./scripts/power_setup.tcl
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
116 of ANSYS, Inc. and its subsidiaries and affiliates.
UPF/CPF-based Power Analysis
These steps are explained in detail in the next sections. You can also run all the steps via a single
tcl file ('run_cpf.tcl'):
% pa_shell -tcl run_cpf.tcl
Type 'pa_shell' to start the PowerArtist shell and then source the following files:
pa_shell % source ./scripts/setup.tcl
pa_shell % source ./scripts/libraries.tcl
pa_shell % source ./scripts/elaborate.tcl
pa_shell % source ./scripts/read_sdc.tcl
pa_shell % source ./scripts/power_setup.tcl
To read the power constraints specified in the CPF file and enable CPF-based average power analysis,
use the following command:
-cpf_in_file <cpf_file_name>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 117
PowerArtist Tutorial Part III: Advanced Features
These reports are similar to the report generated during average power analysis. The following
section of the report is unique to the UPF (and CPF-based) power analysis text report:
5. Power Domain Summary
=======================
Domain top.PD_top
-----------------
Library power_gate
File: ../../data/libraries/power_gate.lib
Library iopad
File: ../../data/libraries/iopad.lib
Library RETENTION_EXAMPLE_LIB
File: ../../data/libraries/retention.lib
Library DP256x32
File: ../../data/libraries/mem_DP256x32.lib
Library DP512x32
File: ../../data/libraries/mem_DP512x32.lib
Virtual Supply: VSS
Library Supplies: None
Estimation Voltage: 0V (from TCL file)
On condition: 1
Static Power: 0W
Dynamic Power: 0W
Virtual Supply: VDD
Library Supplies: None
Estimation Voltage: 1.1 V (from TCL file)
On condition: 1||1
Static Power: 5.69mW
Dynamic Power: 4.05mW
Domain top.PD_top_rx
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
118 of ANSYS, Inc. and its subsidiaries and affiliates.
Physically-Aware RTL Power Accuracy with PACE Models
--------------------
...
Domain top.PD_top_tx
--------------------
<snip>
This section of the report provides information on the power domain's setup for the different
blocks in the design. It summarizes all the domains defined in the UPF (or CPF) file with their
on conditions, static and dynamic power, and user-defined voltage estimation for that domain.
Refer to the Understanding Power Analysis through Text Reports (p. 50) section for complete
details of the remaining sections of the reports.
These reports are generated by accessing the power database (generated during power analysis)
using APSH commands. Refer to the The 'reportPower' Command (p. 63) section for complete
details of the report.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 119
PowerArtist Tutorial Part III: Advanced Features
The main steps in the power reduction flow are controlled by the following commands:
a. Elaborate
Compiles the gate-level netlist into an internal binary format called the scenario file.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
120 of ANSYS, Inc. and its subsidiaries and affiliates.
Physically-Aware RTL Power Accuracy with PACE Models
b. WriteTechnologyFile
a. Elaborate
Compiles the HDL design description into an internal binary format called the scenario file.
2. Set up common design identifiers and directories for log and report files:
pa_shell % source ./scripts/setup.tcl
6. Set up for PACE model generation - clocks, buffers, design, and library database:
pa_shell % source ./scripts/power_setup.tcl
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 121
PowerArtist Tutorial Part III: Advanced Features
2. Set up common design identifiers and directories for log and report files:
pa_shell % source ./scripts/setup.tcl
6. Set up RTL power - clocks, multi VT, design, and library database:
pa_shell % source ./scripts/power_setup.tcl
These steps are explained in detail in the next sections. You can also run all the steps via the following
tcl files:
% pa_shell -tcl run_pace_generation.tcl
% pa_shell -tcl run_rtl_power_with_pace.tcl
Type 'pa_shell' to launch the PowerArtist shell and then source the following files:
pa_shell % source ./scripts/setup.tcl
pa_shell % source ./scripts/libraries.tcl
pa_shell % source ./scripts/elaborate_gate.tcl
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
122 of ANSYS, Inc. and its subsidiaries and affiliates.
Physically-Aware RTL Power Accuracy with PACE Models
• To specify a PACE technology file for capacitance estimation, use the following option:
-power_tech_file <filename>
Capacitance estimation using PACE overrides capacitance estimation using wire load models.
• To specify the name for the log file, use the following option:
-tech_file_log <filename>
• To generate capacitance model, clock tree model, or both in a PACE model, use the following
option:
-generate_pace_model_category [cap | clock | all]
• The 'ReadParasitics' command is used to read the SPEF file with a specific hierarchical
instance in the design. The instance name must be fully rooted (that is, it must contain the
top module name). In PowerArtist, a full-stop ('.') separates the levels of hierarchy.
• The 'reportPaceInfo' command provides a description of how the PACE model was generated
and what the PACE model contains.
• The 'pacePlotCapTables' command plots the capacitance chart for various categories for a
given range of fanout.
WriteTechnologyFile \
-top $design \
-power_tech_file ./$WORK_DIR/pace.tech \
-default_transition_time 50e-12 \
-default_clock_transition_time 20e-12 \
-generate_pace_model_category all \
-default_output_load 1e-12
-no_module_net_capacitances true \
-scenario_file ./$WORK_DIR/$design.gate.scn \
-tech_file_log ./$LOG_DIR/write_pace_model.log \
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 123
PowerArtist Tutorial Part III: Advanced Features
Type 'pa_shell' to launch the PowerArtist shell and then source the following files:
pa_shell % source ./scripts/setup.tcl
pa_shell % source ./scripts/libraries.tcl
pa_shell % source ./scripts/elaborate_rtl.tcl
pa_shell % source ./scripts/read_sdc.tcl
pa_shell % source ./scripts/power_setup.tcl
To use the generated PACE model or '.tech' file for power analysis, the following command is
included:
pa_set power_tech_file <pace_file_name>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
124 of ANSYS, Inc. and its subsidiaries and affiliates.
Generating an RTL Power Model
• PACE Report
The report 'pace_info.rpt' provides a description of how the PACE model was generated
and what the PACE model contains.
The report 'average_power.rpt' is similar to the report generated during average power
analysis. Refer to the Average Power Analysis Report (p. 50) section for complete details of
the report.
The reports described in this section are generated by accessing the power database (generated
during power reduction) using APSH container commands. The reports are similar to the
corresponding reports generated during power analysis.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 125
PowerArtist Tutorial Part III: Advanced Features
RPM is generated using RTL data well before layout data is available. It identifies realistic power-related
worst-case vectors from thousands of RTL simulation cycles along with other key power-related
parameters that affect the power grid. This enables early right-sizing of the power grid. RPM also
enables better coverage for power grid sign-off analysis by focusing RedHawk on the largest change
in power (or di/dt) and largest peak power cycles.
Directory Description
Name/FileName
README Describes the basic flow for running this tutorial.
input Contains the following file:
txrx.vc - Is the Verilog startup file that tells the HDL elaborator
which Verilog files must be loaded for your design.
pa_shell.ini Is the initialization file that sets the 'pa_shell' prompt and is used
to customize the 'pa_shell' settings at multiple levels.
run.tcl A Tcl script to run the RPM tutorial in batch mode.
scripts Tcl scripts called by 'run.tcl' that perform various sub-tasks
related to this tutorial (such as, design elaboration, vector analysis,
and average power analysis).
cleanall A script to remove all the files created while running the 'rpm'
tutorial.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
126 of ANSYS, Inc. and its subsidiaries and affiliates.
Generating an RTL Power Model
1. RTL inferencing
3. RPM generation
2. Set up common design identifiers and directories for log and report files:
pa_shell $ source ./scripts/setup.tcl
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 127
PowerArtist Tutorial Part III: Advanced Features
7. Generate RPM:
pa_shell % source ./scripts/create_rpm.tcl
These steps are explained in detail in the next sections. You can also run all the steps via a single tcl
file (run.tcl):
% pa_shell -tcl run.tcl
Type 'pa_shell' to launch the PowerArtist shell and then source the following files:
pa_shell % source ./scripts/setup.tcl
pa_shell % source ./scripts/libraries.tcl
pa_shell % source ./scripts/elaborate.tcl
pa_shell % source ./scripts/read_sdc.tcl
pa_shell % source ./scripts/power_setup.tcl
1. It determines the parasitic capacitance associated with the nets in your design and the counts
of all the cells that are used during time-based power analysis of your design.
2. It performs a rapid power-based frame selection that identifies the di/dt and peak power
frames.
3. It creates the RPM. The RPM is actually a directory with the 'rpm_model_name' you specified.
You can copy this directory anywhere you need to, but you must not alter the contents.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
128 of ANSYS, Inc. and its subsidiaries and affiliates.
Generating an RTL Power Model
-default_output_load 1e-12 \
-default_transition_time 50e-12 \
-default_clock_transition_time 20e-12 \
-rpm_log_file ./$LOG_DIR/create_rpm.log
• didt.fsdb
• peak.fsdb
• rpm.info
• rpm.power
• rpm.toggle
The file 'rpm.info' provides supply info for 'di/dt' and 'cycle power'. An excerpt is shown
below:
RPM Version: 4.4
Modules: top
Comment: RTL Power Model for design top
Average power for supply OtherVirtualSupplies_top_vdd_1.1 (1.1) = 0.0014917
Average power for supply VDD_M1 (1.1) = 0.0201294
Average power for supply VDD_io (1.1) = 0.00119774
Average power for supply VDD_M2 (1.1) = 0.00790979
Average power for supply VDD (1.1) = 0.0020225
Average power for supply OtherVirtualSupplies_top_VSS_0 (0) = 0
Tick time: 1e-11
Frame: DIDT
Start time: 9.3613e-06 (936130)
Finish time: 9.6645e-06 (966450)
Presim interval: 3.032e-07 (30320)
Average leakage for supply OtherVirtualSupplies_top_vdd_1.1: 0.000620232
Average power for supply OtherVirtualSupplies_top_vdd_1.1: 0.000962828
Peak power for supply OtherVirtualSupplies_top_vdd_1.1: 0.00195548
Average leakage for supply VDD_M1: 0.00125371
Average power for supply VDD_M1: 0.00828784
Peak power for supply VDD_M1: 0.0109408
Average leakage for supply VDD_io: 4.36528e-05
Average power for supply VDD_io: 0.000947266
Peak power for supply VDD_io: 0.00120323
Average leakage for supply VDD_M2: 0.00272101
Average power for supply VDD_M2: 0.00844438
Peak power for supply VDD_M2: 0.00980323
Average leakage for supply VDD: 1.68193e-06
Average power for supply VDD: 0.000253165
Peak power for supply VDD: 0.00202231
Average leakage for supply OtherVirtualSupplies_top_VSS_0: 0
Average power for supply OtherVirtualSupplies_top_VSS_0: 0
Peak power for supply OtherVirtualSupplies_top_VSS_0: 0
Frame: CYCLE_POWER
<snip>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 129
PowerArtist Tutorial Part III: Advanced Features
6.6.8. Generating and Viewing Power Waveforms for Selected RPM Frames
You can generate waveforms of the total power profile by using the following command:
% rpminfo -r top_rpm
The 'rpminfo' command also generates the following xgraph format files (in the 'reports' directory)
for each frame in the RPM:
• CYCLE_POWER.xg
• DIDT.xg
You can view these files in the PowerArtist 'Waveform Viewer', 'xgraph', or 'gnuplot' (version 4
or later). To launch the PowerArtist Waveform Viewer, do the following:
2. Select ' Tools > Waveform Viewer'. In the 'Waveform Name' field, type an ' *' to find all the files
and click the 'Filter' button.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
130 of ANSYS, Inc. and its subsidiaries and affiliates.
Generating an RTL Power Model
3. Select 'CYCLE_POWER.xg' and click the 'OK' button. Similarly, add 'DIDT.xg' and click the 'OK'
button. The resulting output is shown in the figure below:
Figure 6.2: Waveform Viewer showing the peak power and high didt per cycle
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 131
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
132 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 7: Getting Your Design into PowerArtist
7.1. Introduction
This chapter describes the command-line flow for creating a scenario file for Verilog, VHDL, and
mixed-language designs. The designs may be RT-level, gate-level, or mixed-RTL and gate. The scenario
file is a binary representation of the hierarchical micro architectural netlist for your design. You can use
the 'Elaborate' command to create the scenario file for all types of designs.
This chapter includes simple command examples to help you understand the flow. More complex
examples of commands can be found in the 'examples/command_files' directory in the installation.
You can create a scenario file from the command line. For this approach, you must make sure the
PowerArtist design environment is set up correctly, as described in Installing and Setting Up
PowerArtist (p. 5).
Chapter Organization
The following topics are covered in this chapter:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 133
Getting Your Design into PowerArtist
Case sensitivity is critical when matching design names supplied in external files like net names in SPEF
files or clock files, or instance or module names in options such as '-top'. By default, the scenario
database is constructed to be case sensitive if the design is entirely in Verilog, or case insensitive if the
design is VHDL or a combination of VHDL and Verilog.
If you have a mixed-language design, PowerArtist can identify and differentiate between the Verilog
and VHDL portions of the mixed-language design. It performs only case insensitive name matching in
VHDL designs and in the VHDL portions of a mixed design.
The following enhancements improve the usability of case sensitivity support in PowerArtist:
• Library cell or pin is matched in liberty files as case sensitive if instantiated in Verilog designs and as
case insensitive in VHDL designs.
• The scenario file generated during elaboration with case sensitive information, either derived from
the design language or user-specified, is marked through an attribute in the elaborated netlist.
• Default language specific settings are applied in the 'Elaborate' command.
7.3.1. Verilog
This section describes the steps to prepare Verilog design files to perform power analysis:
1. Ensure that the design successfully compiles in your target simulator and functions the way you
expect.
2. Run the 'Elaborate' command to create a scenario file for your design:
Elaborate
-scenario_file <scn_file>
-top <top_module>
-verilog_startup_file <startup_file>
where: '<scn_file>' is the scenario file name, '<top_module>' represents the root of your design,
and '<startup_file>' is the Verilog startup file.
Example:
Elaborate -scenario_file my.scn -top top -verilog_startup_file startup.vc
See the 'Elaborate' command in the PowerArtist Reference Manual for a list of all the available
options.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
134 of ANSYS, Inc. and its subsidiaries and affiliates.
Command-Line Flows
3. At this point, the flow becomes language independent. Use the 'CalculatePower' and
'ReducePower' commands to analyze the simulation information and run either power analysis
or power reduction.
Note: You can create run scripts that run these commands instead of entering them directly on
the command line. For sample scripts, see Contents of the 'tutorial' Directory (p. 20).
Use the 'SetHDLFileExtensionMapping' command to set the analysis mode for the Verilog design
files specified using the '-verilog_startup_file <filename>' option. The analysis mode is
set based on the extension of the design files.
7.3.2. VHDL
This section describes the steps to prepare VHDL design files to perform power analysis:
1. Ensure that the design successfully compiles in your target simulator and functions the way you
expect.
2. Generate your list of VHDL files that need to be compiled into the appropriate libraries. There are
three ways to do this:
• Automatically generate it using your internal processes just like you probably generate your
simulation compile script.
• Translate an existing command file format, like that used for your simulator of choice to the
PowerArtist format.
• Run the 'map-file/makefile/ptCompileScript' option. To enable this flow, do the
following:
a. Build a 'mapping file' that describes the names of all the VHDL libraries and the files you
want to compile into them. For more detail, see section Creating Your Map Files (p. 141).
b. Build 'Makefiles' using the mapping file generated during step #a by running the 'wwvmkr'
utility. These Makefiles define rules that compile your VHDL design units in the correct order
to meet VHDL language requirements, where all design units must be compiled before they
can be referenced. For more detail, see section Running the 'wwvmkr' Utility (p. 142).
c. Run the 'ptCompileScript' utility. This utility executes 'make' on all the makefiles created
in step #b, determines all the libraries and files used in your design, and generates a file
'ptSourceFiles.tcl', that contains a series of 'CompileFile' commands that compile
each of your VHDL files into the correct library in the correct order. See ptSourceFiles.tcl File
Format for more information on this file.
3. Generate a scenario file using the 'Elaborate' command to analyze, elaborate, and infer your
design:
source ptSourceFiles.tcl
Elaborate -top <top_module_name> -scenario_file <scn_filename>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 135
Getting Your Design into PowerArtist
Example:
source ptSourceFiles.tcl
Elaborate -top top -scenario_file my.scn
4. At this point, the flow becomes language independent. Use the 'CalculatePower' command or
the 'ReducePower' commands to analyze your simulation information and either run power
analysis or perform power reduction.
Note: You can create run scripts that run these commands instead of entering them directly on
the command line. For sample scripts, see Contents of the 'tutorial' Directory (p. 20).
Metacomment Processing
VHDL is a strongly typed language and, furthermore, since you can create many different types,
frequent use is made of functions and procedures to provide type conversion and to overload
arithmetic and Boolean operators for your defined types.
When the 'Elaborate' command processes your design, it analyzes the VHDL into equivalent hardware
elements ranging from simple gates to more complex blocks such as adders, and memories. In many
cases, sub-programs used to overload operators and to perform type conversions contain VHDL, which
has no practical hardware implementation and if included in the elaboration process would impair
the accuracy of the power analysis.
For example, to satisfy VHDL syntax and semantics, you must use the 'CONV_INTEGER function' to
convert a 'STD_LOGIC_VECTOR' to an 'INTEGER'. From a hardware point of view, the two types
have the same representation and so the 'CONV_INTEGER' function passes the 'STD_LOGIC_VECTOR'
argument bit for bit through to the 'INTEGER' return value. To accomplish this without interfering
with the VHDL simulation, special comments are embedded in the VHDL source code. These special
comments are called 'metacomments' and are often of the following form:
-- pragma keywords
When the 'Elaborate' command encounters this metacomment, it passes the argument bit for bit to
the return value and bypasses the body of the function. You can also ensure that the 'Elaborate'
command ignores a section of VHDL (such as sections that contain 'TEXTIO' statements) by using
the following metacomment:
-- pragma translate_off
.. some VHDL to ignore..
-- pragma translate_on
PowerArtist can handle the class of metacomments used by Synopsys, which are included in the
packages they distribute. So if you use these libraries you do not need to be concerned about inserting
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
136 of ANSYS, Inc. and its subsidiaries and affiliates.
Command-Line Flows
your own metacomments to ensure that the elaboration process infers appropriate hardware from
your VHDL.
• The VHDL source files must contain a component declaration and an instantiation for each Verilog
module. The component must have the same name as the corresponding Verilog module. The
component ports must have the same name, ordering, size, and direction as the ports of the
corresponding Verilog module.
For example, the VHDL source files can contain the following component declaration for a Verilog
module 'LEAF':
-- component declaration for the verilog module LEAF
component LEAF
port( I1, I2 : in bit_vector(1 downto 0 );
OUTPUT : out bit_vector(1 downto 0 ));
end component;
For example, your Verilog source files can contain the following definition of 'LEAF':
module LEAF (I1, I2, OUTPUT );
input [1:0] I1, I2;
output [1:0] OUTPUT;
...
endmodule
• The Verilog source files must contain instantiations of VHDL entities/architectures. For the module
type name in the instantiation, you must escape the work library name followed by the entity
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 137
Getting Your Design into PowerArtist
name and optionally append the architecture name in parentheses, as shown in the example
below:
\work_lib_name.entity_name(arch_name)
The following are also allowed as long as they are not ambiguous and represent legal VHDL
references:
// Use model #1:
entity_name (arch_name)
• The instance ports must have the same ordering, size, and direction as ports of the corresponding
VHDL entity. For example, the Verilog source files can contain the following instantiation for a
VHDL module 'LEAF':
module top_level(..., I1, I2, OUT);
...
input [1:0] I1, I2;
output [1:0] OUT;
...
// work is the VHDL work library, LEAF the entity name,
// and RTL is the corresponding architecture
\work.LEAF(RTL) inst(.I1(I1), .I2(I2), .OUTPUT(O1));
...
endmodule
• The VHDL source files must contain definitions of the modules. For example, the VHDL source
files can contain the following definition of 'LEAF':
entity LEAF is
port( I1, I2 : in bit_vector(1 downto 0 );
OUTPUT : out bit_vector(1 downto 0 ));
end;
The 'Elaborate' command can read both a Verilog startup file (specified with the
'-verilog_startup_file' option) and a script to compile VHDL source files (specified with
the '-compile_script' option).
Sample Command
Elaborate -top my_lib.my_design_unit -scenario_file my_chip.scn \
-verilog_startup_file my_file.f -compile_script ptSourceFiles.tcl
Alternatively, you can specify Verilog files and VHDL files together using a series of 'CompileFile'
commands in a script passed to 'Elaborate' using the '-compile_script' option.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
138 of ANSYS, Inc. and its subsidiaries and affiliates.
Creating Custom VHDL Packages
Sample Script
CompileFile -type verilog -file my_verilog.v -2001 yes
CompileFile -type vhdl -library toplib -file my_top_vhdl.vhdl AddLibrary STD
CompileFile -type vhdl -library STD -file standard.vhd
AddLibrary IEEE
CompileFile -type vhdl -library IEEE -file std_1164.vhd
AddLibrary WORK
CompileFile -type vhdl -library work -file mydesign.vhd
Refer to the PowerArtist Reference Manual to see the available options of the 'CompileFile' command.
You might need to substitute these standard definitions with ones supplied as part of your company's
standards. To do this, you must specify the location of these new standard library files to the 'Elaborate'
command. There are two techniques to make this happen and they are explained in the next sections.
These files are automatically read by the 'wwvmkr' command depending on the language standard
you are following. These map files have identical syntax to the ones that you use to define the
file/library matching for your design and define three standard libraries by default: 'IEEE', 'STD', and
'SYNOPSYS'.
To add or delete a file from one of these three standard libraries, edit the appropriate map file line.
For example, if you are a Synopsys user you might want to add support for 'Cyclone' to the
'SYNOPSYS' library for all VHDL 93 designs. In this case, you can modify the file as shown below:
map SYNOPSYS ww_synopsys $r -i syn_attr.vhd \
/my-cyclone-directory-path -i cyclone.vhd
1. Use the 'AddLibrary' and 'CompileFile' commands to compile the base packages of your design
into a script called 'myBaseFiles.tcl':
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 139
Getting Your Design into PowerArtist
AddLibrary STD
CompileFile -library STD -file mydir/standard.vhd
AddLibrary IEEE
CompileFile -library IEEE -file mydir/std_logic_1164.vhd
Due to VHDL semantic rules, any design unit you need defined must appear before it is referenced.
In short, your standard libraries must get compiled before all other files and they must be in the
correct order.
In this step, the 'standard.vhd' file, which is compiled into 'STD' must be compiled before
'std_logic_1164.vhd' is compiled into 'IEEE'. Since these two files appear in
'myBaseFiles.tcl' they are automatically compiled before the files defined in
'ptSourceFiles.tcl'.
The 'myBaseFiles.tcl' file is a standard Tcl file. You can use standard Tcl features to locate
your libraries using environment variables and Tcl variables. For example, the 'myBaseFiles.tcl'
script can be re-written as shown below:
global env
The 'wwvmkr' run would be identical to that used by someone using the PowerArtist standard
supplied libraries. When you run 'ptCompileScript' with the '-c' option, PowerArtist generates a
'ptSourceFiles.tcl' file that does not contain any information related to PowerArtist standard
libraries. The '-c' option suppresses the output.
The sourced files must follow the format for a standard compile script. The 'Elaborate' command
reads and processes the scripts in the listed order.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
140 of ANSYS, Inc. and its subsidiaries and affiliates.
The 'wwvmkr' Utility
Sample Mapfile
map LIB1 ./ww_lib1 \
/home/tmiller/unit1 -i {unit1a.vhdl unit1b.vhdl} \
/home/gramirez/stypes -i {type1.vhdl type2.vhdl}
where:
map
Indicates that a 'map' statement is coming. Line continuations are indicated by a trailing backslash
(\).
LIB1
./ww_lib1
Indicates the location of the physical library. 'LIB1' is compiled into the physical library at location
'./ww_lib1'.
Are the two UNIX directories that contain VHDL source to be compiled into logical library 'LIB1'.
For 'unit1', the files to include (specified by '-i') are 'unit1a.vhdl' and 'unit1b.vhdl'. For 'stypes',
the files to include are 'type1.vhdl' and 'type2.vhdl'.
Note:
You must use the VHDL standard libraries supplied with PowerArtist and not the libraries
provided with your simulator when running PowerArtist. Using the PowerArtist libraries
ensures that the 'pragmas' needed by the VHDL compiler are inserted in the libraries.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 141
Getting Your Design into PowerArtist
Now, 'SYNOPSYS' and 'IEEE' point to the same location. The order of the parameters is 'new name'
followed by 'old name'.
1. Build the Makefiles in your local working directory, following VHDL 93 rules. The top-level logical
library is 'work', which is case-insensitive:
wwvmkr -m mapfile -w work
2. Execute 'ptCompileScript', which calls the 'wwcompile' script generated by the 'wwvmkr' run.
ptCompileScript
This creates a file called 'ptSourceFiles.tcl' that you need to source before you specify the
'Elaborate' command.
For complete contents and details of this file, see ptSourceFiles.tcl File Format in the PowerArtist
Reference Manual.
A precompiled Verilog (or SystemVerilog) parse-tree is saved in binary format in a '.svdb' file and a
precompiled VHDL design is saved in binary format in a '.vdb' file.
Another benefit of this functionality is its restore-on-demand feature. If a Verilog (or SystemVerilog)
design depends on some package(s), and if the related .svdb's exist, and if the Verilog library search
path is pointing to them, then the '.svdb' is automatically restored-on-demand without having to
specifically read them again.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
142 of ANSYS, Inc. and its subsidiaries and affiliates.
Precompile RTL Files to a Library (Save/Restore)
Use Model
Do the following steps to use this feature:
1. During elaboration, define the library mapping between the logical and precompiled libraries
directories. To do this, use the following command:
AddLibrary <logical-library-name> <physical-library-path>
2. Save the parsed designs into persistent libraries by using the following command:
pa_set elaborate_precompile true
The modules are saved in their corresponding '.svdb' and '.vdb' files inside the library path
specified by the 'AddLibrary' command.
Examples
• Example 1: If the modules are specified in the same logical library, do the following steps:
While compiling the design, if module definition 'work.mid', is not found then PowerArtist
searches for it in the user-specified pre-compiled library paths.
• Example 2: If the modules are specified in different logical libraries, you have to specify appropriate
configurations to map the instance to the right library, as shown in the example below:
// file: mid.v
module mid (output logic out1, input logic in1, in2);
assign out1 = in1 & in2;
endmodule
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 143
Getting Your Design into PowerArtist
If advanced gates are enabled for elaboration, boolean optimization gets enabled by default. This allows
synthesis and technology mapping with new liberty cell models such as multi-input gates and complex
AOIs. These larger sets of liberty cell models is used for compound cell inferencing for RTL design.
The following new pa_set is added to enable advanced gates with new liberty cell models:
pa_set elaborate_use_advanced_gates <true | false>
You can also use the following command to enable advanced gates:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
144 of ANSYS, Inc. and its subsidiaries and affiliates.
Elaboration Using Advanced Gates
CELL FLAVOURS/MODELS
TYPE
AND AND3, AND4
OR OR3, OR4
NAND NAND3, NAND4
NOR NOR3, NOR4
XOR/XNOR XOR3, XOR4, XNOR3, XNOR4
INOR/IINOR INOR2, INOR3, INOR4 (IINOR Flavors)
IND/IIND INAND2, INAND3, INAND4 (IIND Flavors)
AOI/OAI OAI211, AOI211, OAI222, AOI222, OA22, AO22, OAI221, AOI221, OAI31, AOI31, OAI32,
AOI32, OAI33, AOI33, OA211, AO211, AOAI211, OAOI211, IOA21, IAO21
The advanced liberty cell models flow is also supported by PDB, GUI, ReducePower, GAF (Critical
Signal Flow) and ProfilePower command flows.
Use Flow
The following describes the usage in Elaboration:
• Elaboration
The optimized netlist generated after Elaboration is written into a scenario file with advanced
liberty cell gates. These files are then read by Power Analysis and Reduction flows.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 145
Getting Your Design into PowerArtist
In Power Analysis, these liberty cell models are considered during macro optimization and
power calculation. The models are mentioned in the average power report.
For PACE-driven elaboration, PACE models must be generated before running the Elaboration.
The elaborate_use_advanced_gates command enables the advanced gates flow
ensuring only those types of advanced liberty cell models are selected for power analysis which
are present in both PACE.tech and myCells.lib files.
– Use the following pre-defined Tcl command script to generate PACE technology file:
pa_shell % source WriteTechnologyFile.tcl
By default, liberty cell models are captured in the PACE technology files.
– Out of supported liberty cell models, the tool picks targeted liberty cell models from the
PACE files.
– During macro optimization, only targeted liberty cell models are considered during power
analysis.
Input
By default, new liberty cell models are captured in the PACE flow. This step is identical to the step
explained in detail in the Understanding Power Analysis Setup (p. 24) section of the Power Analysis
tutorial. The advanced gate model is enabled using an additional pa_set variable:
To use advanced gates with new liberty cell models, use the following command:
pa_set elaborate_use_advanced_gates true
NOTE: If you use old PACE technology files, the tool gives 'HDL-245' warnings. You may observe no
changes in the results.
Outputs
The following is the list of outputs in this flow:
• Vertical Report
Multiple new categories for all new liberty cell models are now present in the vertical section
of the power report. The following snapshot of detailed vertical power report reflect new
liberty cell models:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
146 of ANSYS, Inc. and its subsidiaries and affiliates.
Elaboration Using Advanced Gates
• GUI
The following snippet shows the new cell types with tags as rendered in the GUI:
• Log Messages
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 147
Getting Your Design into PowerArtist
– The tool now records the new liberty cell count coverage with respect to gate.
Summary
Table 7.2: Description for Arguments and Effective Flow
A decrease in overall top power and design area is expected. Decrease in net pin capacitance, macro
instances power numbers, inferred buffer count and power numbers are expected.
You can use the '-synlib_files' option (available with several commands) to specify the
Liberty library files, as shown below:
Elaborate -synlib_files {mylibrary1.lib mylibrary2.lib}
-verilog_startup_file my.vc
-scenario_file mychip.scn
-top core
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
148 of ANSYS, Inc. and its subsidiaries and affiliates.
Overriding Parameter Settings for Top-Level VHDL/Verilog Modules
You can also use the 'ReadLibrary' command to specify the Liberty library files, as shown below:
ReadLibrary mylibrary1.lib
Note: If you specify a large number of 'ReadLibrary' commands such that the command line
generated to perform elaboration, power calculation, or power reduction exceeds the Unix limits
of command-line size, PowerArtist automatically generates a file 'ptshell.libs.opts' that
contains the Liberty library names. This file is then referenced using the '-i' option of various
commands.
Refer to the PowerArtist Reference Manual for complete details of the 'SetLibraryScalingFactor' command
and its supported options.
Consider the example of the following Verilog (or equivalent VHDL) fragment:
module top(in,out);
parameter size=2;
input [size-1:0] in;
output [size:0] out;
assign out = in+1;
endmodule
You can override the size parameter by adding the '-parameter_maps' option to your Tcl command
file:
Elaborate -parameter_maps {size=4} ...
When PowerArtist elaborates the Verilog design, size is set to '4'. To override multiple parameters, you
can specify a Tcl list of parameters. For example:
Elaborate -parameter_maps {p1=4 p2=5}
You can also use the '-parameter_maps' option to set generics. Consider the example of the following
VHDL fragment:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY TOP IS
GENERIC(SIZE : integer);
PORT ( AA, BB, TT : IN STD_LOGIC_VECTOR(SIZE-1 downto 0);
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 149
Getting Your Design into PowerArtist
ARCHITECTURE A0 OF TOP IS
BEGIN
CC <= BB AND TT;
END A0;
For this example, the following line in your Tcl command file sets the 'SIZE' parameter:
Elaborate -parameter_maps {size=4}
In behavioral clock gating, the cell 'LATCH_AND' is replaced by an integrated clock gating cell (ICGC)
from the library, based on user input. This support is available for RTL written in any HDL language
including Verilog, System Verilog, or VHDL.
Use the 'MapBehavioralCell' command to capture the mapping information of a module to library
cell and module port to library cell pins. Refer to the PowerArtist Reference Manual for complete details
of the command and its supported options.
Example:
In this example, module 'LATCH_AND' represents a behavioral clock gate that is mapped to the ICGC
'cell_415' from the library. Ports of the module 'LATCH_AND' are mapped to pins of the library
cell 'cell_415' using the '-pin_mapping' option:
MapBehavioralCell -module LATCH_AND -lib_cell cell_415 \
-pin_mapping {{en E}{in_clk CK}{enable_clk ECK}}
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
150 of ANSYS, Inc. and its subsidiaries and affiliates.
HDL Advanced Topics
A sample schematic of the design 'before' enabling behavioral clock gating is shown below:
The schematic represents the RTL netlist for the 'LATCH_AND' module instance. After mapping this
module to an ICGC from the library, the logic for 'u0' instance is replaced by Rising-Edge Latch-Based
Integrated Cell 'cell_415' from the library.
The schematic of the design 'after' enabling behavioral clock gating is as shown below:
This enhancement impacts power analysis, power reduction, clock tree inferencing, and clock gating
efficiency as logic driven by the behavioral clock gate in the RTL is considered as driven by a clock
gate.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 151
Getting Your Design into PowerArtist
• You are using DesignWare ™, which contains many models that are not synthesizable, and you
want to create some models that more closely represent what is synthesized.
• Your designers have used simulation models in their design to improve simulation performance
and you wish to replace those models with versions that are normally synthesized.
PowerArtist provides a default set of power macro models that contain definitions to replace some
of the simulation models from the base DesignWare ™ library. The 'Elaborate' command looks for
these macro models in the power macro directory. The default location for this directory is:
$POWERARTIST_ROOT/pthdl_src/macros
You can provide a different directory name using the 'Elaborate -macro_directories' option.
This directory must contain:
In this example, the macro directory must also contain a Verilog file named 'myAndGate.v',
which contains the module definition for the module 'myAndGate'. The elaborate process
marks all occurrences of Verilog modules or VHDL entities of 'originalAndGate'. It compiles
'myAndGate.v' and replaces instances of 'originalAndGate' with the model constructed
from 'myAndGate'. It also applies any parameters or generic values to this new model. The
scenario database that 'Elaborate' generates contains instances of 'myAndGate' instead of
'originalAndGate'.
PowerArtist has modeled the following components that are mapped to the base DesignWare ™
library:
• adder
• adder/subtracter
• decrementer
• incrementer
• subtracter
• absolute value
• simple multiplier
• 2-6 stage pipelined multipliers
• wallace tree multiplier
• partial multiplier
If you use DesignWare ™, you do not have to do anything to take advantage of this feature. By default,
PowerArtist automatically substitutes any modules it finds in the 'macros' sub-directory. If you have
created your own power macros and cannot install them into the 'macros' sub-directory, then you
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
152 of ANSYS, Inc. and its subsidiaries and affiliates.
HDL Advanced Topics
must use the 'Elaborate -macro_directories' option to point to the directory containing the
power macros. If you use multiple directories, use a Tcl list to specify the directories, as shown in the
following example:
Elaborate -macro_directories {
dir1
dir2
dir3
...}
The issues associated with long module names are now addressed. If the uniquified module name
exceeds 150 characters, the following happens:
• During pdb creation, the parameter-value pair is annotated as a PDB property named
'mod_parameter_list'. You can use the APSH command 'getPropVal' to access this property
as shown in the example below:
getPropVal <moduleName> mod_parameter_list
Note: The 'getPropVal' command returns the parameter-value pair only for those instances for
which the module names are truncated. If the uniquified module name is not truncated, 'getPropVal'
returns ' -1'.
The options of the 'Elaborate' command allow you to control array inferencing. You can use these
options to tell PowerArtist to 'blast' arrays into a combination of state devices and the supporting
control logic rather than to infer a single register or latch file.
If you make extensive use of arrays and you plan to clock gate the registers that are ultimately
synthesized, then you should take advantage of these options to force bit-blasting to occur in as
many places as possible. The options all have the term 'regfile' in their names. These options
should also be used for instances that must be inferred as a latch file.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 153
Getting Your Design into PowerArtist
• To specify the minimum bit count (words x length) of 2-D arrays to preserve as register or
latch files, use:
-min_regfile_bit_count <int>
• To specify the minimum word count of 2-D arrays to preserve as register or latch files, use:
-min_regfile_word_count <int>
• To specify the minimum word length of 2-D arrays to preserve as register or latch files, use:
-min_regfile_word_length <int>
The format to specify 2-D arrays that must either be bit-blasted ('-blast_regfile') or preserved
('-preserve_regfile') is:
module_name. array_name
If the 2D array is used in a named block, generate statement, or other named scope in your Verilog,
you must include that scope value. In such cases, the format is:
module_name. scope_name. array_name
3. Otherwise, for each array, the word length, word count, and total number of bits are compared
with the minimum limits for register files. You set these limits using the '-min_regfile_*'
options. If any of these are lower than the specified or default limits, then the array is marked to
be 'bit-blasted'.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
154 of ANSYS, Inc. and its subsidiaries and affiliates.
HDL Advanced Topics
Examples
The following Verilog examples show how to translate the names in your Verilog to the names required
in the bit-blasting options. All the examples show how the array names are used in the
'-preserve_regfile' option:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 155
Getting Your Design into PowerArtist
genvar i;
generate
for(i = 0; i < 4; i = i+1)
begin : blk
Note: The scope name for the generate block must be specified without the [ index] for each
'genvar' iteration. The option applies to 'all' generated copies of the block, so that all copies
of 'myRam' are preserved.
• If bit-blasting does not occur, the warnings are 'HDL-71' or 'HDL-54'. For example:
HDL-71: design.v:15 inferred regfile instance myblock:myRam with data
width of 6, address width 4.
The 'Elaborate' command does not generate 'Notes' or 'Error' messages specific to bit-blasting.
Note: In some cases, the colon ':' separator is printed for named scopes. All 'regfile' options are
specified using a dot .' separator only.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
156 of ANSYS, Inc. and its subsidiaries and affiliates.
HDL Advanced Topics
The GUI output of the above RTL code shows that the design representation within PowerArtist is
consistent with the RTL code:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 157
Getting Your Design into PowerArtist
• If PowerArtist finds 'AND', 'OR', 'NOR', and 'XNOR' cells in the design libraries, they are honored,
else 'NAND' and 'XOR' are used for cell mapping. The 'SetVT' command is enhanced to accept
cell types 'AND', 'OR', 'NOR', and 'XNOR'.
• Cell mapping is enabled for design instances and the sub-netlist of macros ('adder',
'comparator', 'decoder', 'unencoded_mux', 'multiplier', and 'shift') with the
'AND'/'OR'/'NOR'/'XNOR' cells.
Outputs
The following files are updated when you perform power analysis after enabling the enhancement:
Power numbers are expected to change due to this enhancement and the changes are expected
in the following sections of the report:
– The 'Internal Power Consumption' section for the power numbers of the leaf-level
instances.
– The 'Mixed-VT Cells Distribution' section for the new supported cell types.
– The 'Power Consumption by Model/Gate Type' section for the cumulative power of the
new cell types.
This updated report contains details of the supported cell types in the 'Function' column and
their count in the 'Occurrence' column:
Cell VT Group Function Class Occurrence
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
158 of ANSYS, Inc. and its subsidiaries and affiliates.
HDL Advanced Topics
Power is expected to reduce and correlate better with post-synthesis results if PowerArtist identifies
more clock gating opportunities using the inverted logic in the register feedback path. Clock gating
efficiency metrics can also change.
wire [1:0] a;
always @(...)
begin
a[1] <= \a[1] ;
a[0] <= \a[0] ;
end
Moreover, an escape character was sometimes added to the identifiers to allow correct generation
of OpenAccess-based power database.
In the example shown below, the column on the left shows a sample code with the corresponding
generated names in the column on the right:
Sample Code: Net names stored in the pdb (when support
typedef struct packed { for escaped identifiers is enabled):
logic [20:0] m ; top.\abc[1] .temp.d.m[0]
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 159
Getting Your Design into PowerArtist
This change in object names adversely impacted usability while debugging power. To enable
appropriate handling of the escaped identifiers, the flow is enhanced to preserve the original RTL
names in the power database.
Additionally, the power analysis engines (average and time-based) are enhanced to deal with name
mapping issues related to non-escaped identifiers in saif, simulation, and spef files and escaped
identifiers in RTL. This enhances debuggability at RTL as escaped identifiers are retained throughout
the flow.
Default: false
• is expected to improve the accuracy of logic power when compared to post-synthesis results.
• can increase the runtime of the Elaborate command in the order of ~30%.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
160 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 8: PowerArtist RTL Encryption
8.1. Introduction
This chapter describes the encryption support in PowerArtist.
Encryption is a common approach for protecting the RTL source from unauthorized access. PowerArtist
supports RTL encryption via a native RTL encryption utility called ProtectRTL. RTL files are encrypted
by a hidden key in PowerArtist such that the encrypted RTL can be decrypted and read only by
PowerArtist. Since the encryption is performed using a hidden key, the IP provider is not required to
ship the encryption key file along with PowerArtist encrypted RTL IP. This allows for a secure exchange
of RTL IP between design groups or companies.
Chapter Organization
The following topics are covered in this chapter:
8.2. Use-Model/Flow
The diagram below shows the RTL IP exchange flow:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 161
PowerArtist RTL Encryption
While parsing the encrypted RTL for power analysis, PowerArtist does not issue any parser messages
or warnings related to syntax and semantics checks. Only a summary containing the total number of
errors and warnings that were suppressed during elaboration of the encrypted RTL are reported. This
ensures additional decryption security for the IP vendor. An example of the error/warning summary is
shown below:
Warning HDL-142 : 0 error(s) and 1 warning(s) suppressed for RTL encryption.
After analyzing power for the encrypted RTL, PowerArtist reports static, dynamic, and total power of
the RTL IP in reports and GUI. The contents of RTL IP, such as the hierarchical and leaf instances and
nets within the RTL IP, are not available through the PowerArtist GUI, reports or by queries to the
PowerArtist shell. Instances of the modules defined in the encrypted RTL appear as black-boxed instances
in the PowerArtist GUI. This ensures that the GUI and text reports do not reveal information about the
encrypted RTL. The power reduction flow does not support encrypted RTL.
• Specify a directory path containing the RTL files to encrypt using '-protect_rtl_dir
<dirname>'.
• Specify a single RTL file using '-protect_rtl_file <filename>'.
• Specify a list of Verilog and/or VHDL RTL files in startup file format using:
– '-protect_rtl_verilog_startup_file <filename>' and/or
– '-protect_rtl_vhdl_startup_file <fiename>'
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
162 of ANSYS, Inc. and its subsidiaries and affiliates.
Decryption and Power Analysis
By default, ProtectRTL generates and writes the encrypted files to the current directory. To
save the encrypted RTL in a specific output directory, use '-protect_rtl_output_dir
<output_dir_name>'.
A tarball of the encrypted RTL directory is created for easy handshake of encrypted RTL. The
name of the tarball is derived from the name of output directory. For example, if the output
directory is 'pa_protected_rtl', the tarball is named 'pa_protected_rtl.tar.gz'.
ProtectRTL automatically generates a file containing a list of all the encrypted files. By default,
the filename is 'ProtectedFile.list'. To change the default filename, use
'-protect_rtl_list <filename>'.
ProtectRTL also has the ability to generate a Verilog and/or VHDL startup file to enable easy
RTL power analysis setup for encrypted RTL in PowerArtist. The output startup files are generated
only when the input RTL files are provided to ProtectRTL in startup file format. The default
names of the output startup files are 'ProtectedVerilogOutputFile.list' and/or
'ProtectedVhdlOutputFile.list'. Use the following options to customize the names
of the output startup files:
– '-protect_rtl_output_verilog_startup_file <filename>' and/or
– '-protect_rtl_output_vhdl_startup_file <filename>'
Note: Refer to the ProtectRTL command in the PowerArtist Reference Manual for detailed explanations
of all the supported options.
PowerArtist performs power analysis of the encrypted RTL, but provides access to limited power data
in the text power reports, the GUI, and the power database (PDB). If all files of the design are encrypted,
PowerArtist reports power numbers for the 'top-level' only.
The following properties of the encrypted RTL can be queried from the PDB after power analysis in
PowerArtist:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 163
PowerArtist RTL Encryption
• static_power
• dynamic_power
• clock_static_power
• clock_dynamic_power and
• power per supply per clock domain
• get_property
Use 'get_property' for the attributes static_power, dynamic_power,
clock_static_power, or clock_dynamic_power:
get_property -class cell <instance path> <attribute_name>
• get_instance_power
Use 'get_instance_power' for the attributes logic, clock, and buffer power per supply
per clock domain:
get_instance_power [options] <object_spec>
PowerArtist ensures IP protection during power analysis and reduction flows. The generated log messages
and reports do not show any information for the encrypted modules. The encrypted design or the
encrypted part of the design appears as a black-box in the PDB, GUI, and text reports.
The following two types of encryptions, as recommended by the IEEE standard, are supported:
• Symmetric Encryption
– AES (128) [aes128-cbc]
– AES (256) [aes256-cbc]
• Asymmetric Encryption
– RSA (>=2048)
PowerArtist reports an error if any other types of algorithms are mentioned in the digital envelop other
than the ones that are supported, even if those algorithms are as per IEEE 1735-2014 standard.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
164 of ANSYS, Inc. and its subsidiaries and affiliates.
Support for IEEE-1735
The encrypting tool generates a random key (for tools such as PowerArtist to use) with a symmetric
method, called a 'session key'. The IP protected source code is encrypted using this 'session
key'. The 'session key' is also encrypted using a public key, which must be added to the design
file(s) before encrypting them.
The encrypting tool shares the 'session key' with PowerArtist by means of a 'KEY_BLOCK'. The
following information is included in a 'KEY_BLOCK':
The following is an example of a digital envelope (for Verilog designs) with the 'key_block' and
'data_block':
`pragma protect begin_protected
`pragma protect version=1
`pragma protect author="XXX Corporation"
`pragma protect key_keyowner="Ansys Incorporated"
`pragma protect key_keyname=" AI-POWERARTIST-RSA-1"
`pragma protect key_method="rsa"
`pragma protect key_block
FWVB0D8B2Z0Rb1/
zTMq7K8e40aBjr1IyeqJLm5S6u2eEDRn1NumCxbw1fAFz8WJFzZ3Kfw96UOOgTQRA2vnXpDOARpEWgJ+m
NcQRrxSZJP389gOYIdMzln8U6zaTrJGJm+pfmym2dYa33ghnP3oY+Ky7I0GinQLpOr7d1ZdAvFaSaKW/
sKKvf17CxyV1BLv+RkvrD3HA3AYq5JJeMnfT6oe+eGwvtiNIg8MJrSf4OfDojxNODZ2/sa9q60/x/
TGqDq8PNNpYR7HoM//x00QgQqSN8vXVLIRUUJz0tQx/
4GinBa7uJRMzvnszGziWI8WJlKUC44gBfqwUX0U+IIfNAw==
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 165
PowerArtist RTL Encryption
9ye+oUptTpWf7PktA6B9Ksw1mZRcmcGyAAo2GzJxD1byQdKP2ei91hdlSHTCDcXPh3YGPWbb6gxcJL76P
mNI7eEFlDXQ6Uk834vrbGmQNeQh0p2PpzMte4eMh4MCNQsshUCmGwQg98edZEj7zKeuVWnT+pB2bgVN5t
ZwqH2UUzCbFL9HFaksqHhOLvxnZKCY
PowerArtist detects the digital envelope automatically, parses the envelope, and internally
decrypts the encrypted data. PowerArtist reads each 'KEY_BLOCK' until it finds one that
includes a key it recognizes. It then decrypts the associated 'KEY_BLOCK' data to determine
the original session key and uses that session key to internally decrypt the IP source code.
Decryption commands use standard prefixes. The general format of a decryption command
is:
<prefix> <command> <optional arguments> ...
PowerArtist shares the public key of a (public, private) key-pair with the IP creator/encryption
tool. PowerArtist then internally decrypts the encrypted RSA block with the private key of the
pair. Contact your local support AE for the public key.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
166 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 9: Preparing for Power Analysis
9.1. Introduction
This chapter describes the steps required before you can run power analysis or reduction. It includes
information on setting net capacitance, handling designs with multiple power supplies and libraries,
and clock power specification.
Chapter Organization
The following topics are covered in this chapter:
• Back-annotate capacitances using SPEF. For details, see Back-Annotating Capacitance Using SPEF (p. 168).
• Back-annotate load capacitances for primary outputs using a PowerArtist capacitance file. You can
get output load information based on the package you use for your design. Capacitance files for this
purpose should supply loads representing output load capacitances. For details, see Using
Back-Annotated Load Capacitances for Primary Outputs (p. 170).
• Specify default output load capacitance using the 'CalculatePower -default_output_load <>'
option. For details, see Specifying Default Output Load Capacitance Using a Command Option (p. 170).
• Back-annotate capacitances for local signal nets using a PowerArtist capacitance file. RTL floorplanners
may be able to generate signal capacitances. This format is most often used for RTL and mixed
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 167
Preparing for Power Analysis
RTL/gate designs. If you are back-annotating signal capacitances, you can only choose one format.
You cannot mix SPEF and wiring capacitances files. For details, see Using Back-Annotated Wiring
Capacitances for Local Nets (p. 170).
• Specify a PowerArtist Calibrator and Estimator (PACE) technology file (using the '-power_tech_file
<filename>' option) to estimate net capacitance for RTL, mixed RTL/gate, or pure gate-level designs.
PACE files are also used for clock distribution network modeling. For details on how to use a PACE
file, see Generating and Using PACE Technology Files (p. 467).
• Use wire load models to estimate signal capacitances. This can be used for RTL, mixed RTL/gate, or
pure gate-level netlists. You can set the wire load models using Tcl commands. For details, see
Specifying Wire Load Models (p. 171).
• Use default wire load models. For details, see Using Default Wire Load Models for Capacitance
Analysis (p. 173).
The capacitance, length, and routing-area values of all nets not explicitly listed in a net capacitance file
are estimated from capacitance models either available in your technology libraries or supplied
automatically by PowerArtist. If you do not want to perform net capacitance estimation, you must
specify the 'CalculatePower -no_module_net_capacitances true' or the 'ReducePower
-no_module_net_capacitances true' command.
If you are using one of the capacitance file formats to back-annotate capacitances onto your nets,
PowerArtist performs the checks and generates the following warnings:
• A warning for every net in your back annotation file that it cannot find in the scenario file.
• A warning for every net in the scenario file that was not back-annotated after all back annotation
files are processed.
If there is only one SPEF file that covers the entire design, use the '-spef_file' option as shown
in the following example:
CalculatePower -scenario_file my_chip.scn -spef_file my_chip.spef
For multiple SPEF files, use the hierarchical flow described next.
• You can specify the list of SPEF files using the 'SetSpefFiles' command and the top SPEF design
name using the 'SetTopSpef' command. The SPEF reader then determines the hierarchy by
going through the instantiations in the SPEF files (by looking at the '*DEFINE' statements),
and then processing them.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
168 of ANSYS, Inc. and its subsidiaries and affiliates.
Estimating Net Capacitances
To use the flow with '*DEFINE' statements, specify the following commands:
1. SetSpefFiles
This command provides the SPEF reader with all the files that you want to process
(you can specify a single SPEF file). The SPEF reader performs a rapid 'read' of these
files to determine the associated design names. These design names must later be
referenced in '*DEFINE' statements following the SPEF specification.
SetSpefFiles { file_name(s)}
2. SetTopSpef
This command tells the SPEF reader the name of the design that forms the root of
your SPEF hierarchy. Typically, this maps to the top-level design unit in your design
hierarchy. The design name is then used to find the top-level SPEF file, which is read.
As the SPEF reader encounters '*DEFINE' statements, the other SPEF files are located
and read-in. This command is not required when you specify only one SPEF file.
SetTopSpef top_design_name
• Alternatively, you can specify a hierarchy (hierarchical instance) in the design along with the
SPEF file associated with it, using the 'ReadParasitics' command.
To use a flow that follows SPEF back-annotation methodologies established by industry standard
timing analysis products, include the 'ReadParasitics' command in your PowerArtist command
file (Tcl script).
ReadParasitics -path hierarchical_inst_name -file SPEF_file_name
This command associates a particular SPEF file with a specific hierarchical instance in the
design. The instance name must be fully rooted (that is, it must contain the top module name)
and include dots (.) to separate the levels of hierarchy.
SPEF files can represent parasitics either as detailed or reduced models. The reduced model
represents parasitics as a single RC pi-model. Such a model includes the receiver pin capacitance.
PowerArtist supports the reduced and detailed parasitic models. Use the following command
to specify that the parasitic model is reduced and the receiver pin cap is included in the SPEF
file:
ReadParasitics -pin_cap_included true
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 169
Preparing for Power Analysis
The two flows are mutually exclusive. The SPEF reader generates an error if the flows are mixed. Do
not use the 'SetSpefFiles'/'SetTopSpef' commands if you are using the 'ReadParasitics' command.
If you ignore C-style comments, the exact string is taken as the net name.
Notes: Be aware of the following points when using these new commands:
• Do not use the '-spef', '-spef_file', and any of the hierarchical SPEF commands together.
This causes an error.
• The SPEF reader does an incremental back-annotation. If a net already has parasitics associated
with it, the parasitics specified in the SPEF are added to them.
• If a net specified in the SPEF file is not found in the design, a warning is reported.
You should always specify output loads. This is especially true if you have pads instantiated in your
design. If you supply a default load value using the '-default_output_load' option or have
annotated your loads using the '-load_file' option, then you do not get messages about your
primary output nets. Primary input nets are not flagged as missing annotations since capacitances
on primary inputs do not impact power consumption.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
170 of ANSYS, Inc. and its subsidiaries and affiliates.
Estimating Net Capacitances
The following sections provide an overview of the various commands and precedence rules used to
select the wire load models. You can specify the wire load models using the following commands or
option:
• SetWireLoadMode
• SetWireLoadModel
• SetWireLoadSelectionTable
• SetCapEstimation
• '-wireload_library' option to the 'CalculatePower' or 'ReducePower' commands
For details on how to use these Tcl commands in the command file, see Estimating Pin
Capacitance (p. 173).
PowerArtist has to determine and locate the library to be searched for wire load models. PowerArtist
determines the correct library to be searched by applying the following rules in the given order:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 171
Preparing for Power Analysis
1. If the 'SetWireLoadMode' command explicitly supplies a logical library name, use that
library as the default library.
2. If there is no explicit specification of a logical library name and you have specified the
'-wireload_library' option, use that library as the default library.
3. Otherwise, select the first library that contains wire_load models in the technology library
list as the default library.
Once you have identified the library to search, then the commands have a set of hierarchical rules.
The rules are:
1. The wire_load mode dictates how wire_load models of children instances are assigned. If
the mode is 'top', assign the wire_load of the parent instance if a parent exists and no
commands pertain to this instance.
2. If the 'SetWireLoadModel' command is specified for a particular instance, use that model.
4. If the 'SetCapEstimation' command is specified, locate the wire_load model in the default
capacitance file.
5. If the 'SetWireLoadSelectionTable' command is not specified, look for the selection table
specified by the 'default_wire_load_selection' attribute in the default library. If
the attribute is supplied, use the same rules as the 'SetWireLoadSelectionTable' command
to determine the wire_load model.
7. If the default library does not contain selection tables, then use the wire_load model
specified by the 'default_wire_load' attribute.
These default rules ensure that the power analyzers always estimate capacitance for your design.
When all else fails, capacitance is estimated using the default 90nm technology libraries that are
included with the PowerArtist installation. This is discussed in the following section. If you want to
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
172 of ANSYS, Inc. and its subsidiaries and affiliates.
Estimating Pin Capacitance
Note: The power analyzers do not estimate the wiring capacitance of a net without a fanout. For
example, a primary output has no fanout and the only pin on the net is the driver. Therefore, the
estimators do not compute the wiring capacitance for a primary output.
Some sub-90nm (and smaller) technology libraries do not contain wire load model information. Some
technologists believe that wire load models are not effective at predicting capacitance to a high
enough accuracy for them to be used for timing closure. Therefore, some companies do not include
wire load models in their Liberty files. However, wire load models have a strong role to play in power
analysis, especially at high levels of design abstraction.
If wire load models are not defined in your libraries, but you want to consider wire capacitance during
power analysis using PowerArtist, use the default wire load library that comes with the PowerArtist
installation. This default library has models for various technology sizes. These models were generated
based on experiences with a variety of technology sizes. Ansys recommends that you use these
libraries rather than not consider capacitance at all. The default wire load library is available at:
$POWERARTIST_ROOT/sfl_lib/generic/seqcap.lib
The file contains 'wire_load_selection' tables for 180nm, 150nm, 130nm, 90nm, 65nm, and
45nm technologies. You can use this library, if there is no wire_load model information in any of your
technology libraries. To use this library for capacitance estimation, specify the 'SetCapEstimation'
command.
Unlike all your other Liberty files, you do not need to specify the location of this file using the
'-synlib_files' option. The analyzers automatically locate this library and insert it at the end of
the library search path. Therefore, it is always available for use. This library is read-only, so you can
not accidentally modify it. However, once you install PowerArtist, you can modify it to create a
site-specific set of technology defaults.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 173
Preparing for Power Analysis
The valid values of the '-interpret_pin_caps_as' option are 'min', 'max' and 'avg'. The actual
pin capacitance values are calculated as follows:
The value you select determines the manner in which PowerArtist calculates pin capacitance. PowerArtist
calculates pin capacitance using the following algorithm:
If the '-interpret_pin_caps_as' option is not specified, then PowerArtist calculates pin capacitance
using the following algorithm:
If 'nom_voltage' or default 'power_rail' values are not supplied, the characterization voltage is
taken from values within the default operating conditions. If 'default_operating_conditions'
are not supplied, the estimation voltage is taken from the 'nom_voltage' or the default 'power_rail'
attribute within the 'power_supply' group.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
174 of ANSYS, Inc. and its subsidiaries and affiliates.
Handling Designs with Multiple Power Supplies
To get the dynamic power, PowerArtist derates the dynamic energy number by the square of the
estimation voltage divided by square of the characterization voltage. For details about characterization
and estimation voltages, see Liberty Power Supply Support (p. 176).
Any voltage you supply using the '-voltage' option to 'ReducePower' becomes the estimation voltage
for the entire design. Using '-voltage' is an obsolete technique and is replaced with the
'CreateVirtualSupply' command. If the estimation voltage does not equal the characterization voltage,
voltage derating occurs.
Choices like these impact the power analysis of your chip. In PowerArtist, you can assign Liberty libraries
to hierarchical instances with libraries further down in the hierarchy, overriding those higher in the
hierarchy. All children of the hierarchical instance inherit the library of the parent unless you specifically
assign them their own power library. You can control these choices using the 'SetLibrary' command.
• A design with two voltage islands — one supply for the core of the chip and the other for the
I/Os.
• A design that uses power gating. The supplies to the power domains must be explicitly turned
on and off due to the use of sleep signals to put various power domains of your chip in a stand
by mode.
This section describes the ways in which PowerArtist supports designs with more than one power
supply. In addition, this section describes the special support requirements for designs that require
more than one power library (common in hierarchical designs).
PowerArtist provides general support for multiple power supplies by allowing you to:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 175
Preparing for Power Analysis
Note: Any changes to the power supply configurations should be completed after generating a scenario
file.
For voltage domain applications, use the 'SetLibrary' command. You might also use the
'CreateVirtualSupply' command to create virtual supplies with different voltages than those defined
as the default operating condition in the library. If you provide a voltage, it becomes the estimation
voltage and then the library's characterization voltage is derated using the new estimation voltage
value. The new voltage is then used to compute new energy and power numbers. This flow incorporates
the standard PowerArtist derating technique.
Similarly, if a library defines multiple supplies using the power supply attribute as shown below:
nom_voltage : 1;
power_supply() {
default_power_rail : VDDlow;
power_rail(VDDhigh, 1.32) ;
power_rail(VDDlow, 1.32) ;
power_rail(VSShigh, 0.00) ;
power_rail(VSSlow, 0.00) ;
}
operating_conditions("BEST"){
process : 0.70;
temperature : 110;
tree_type : balanced_tree;
power_rail(VDDhigh, 1.00) ;
power_rail(VDDlow, 1.00) ;
power_rail(VSShigh, 0.00) ;
power_rail(VSSlow, 0.00) ;
}
default_operating_conditions : "Best";
and the 'default_operating_conditions' are selected 'Best', the estimation voltages for the
supplies are taken as:
VDDhigh - 1V
VDDlow - 1V
VSShigh - 0V
VSSlow - 0V
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
176 of ANSYS, Inc. and its subsidiaries and affiliates.
Handling Designs with Multiple Power Supplies
The power numbers are derated accordingly, based on the supply voltages defined in the
'power_supply' construct. To get the dynamic power, PowerArtist derates the dynamic energy
number by the square of the estimation voltage divided by square of the characterization voltage.
Similarly, PowerArtist derates leakage power by the estimation voltage divided by the characterization
voltage.
The Liberty 'rail_connection' attribute is used to specify the power rails to which a cell is tied.
Power for an instance of the cell is derived from those power rails only.
cell (XYZ) {
...
pg_pin (PVDD) {
voltage_name : VDD1;
pg_type : primary_power;
}
pg_pin (PVSS) {
voltage_name : VSS;
pg_type : primary_ground;
}
...
leakage_power () {
value : P;
related_pg_pin : PVDD;
}
}
...
}
If the power and ground pin association is not specified, then such leakage power models are
associated with the first power supply of the library. In the above example, in the absence of the
'related_pg_pin' attribute, the 'leakage_power' model is associated with the first power supply
'VDD2'.
This default association is changed to the first power supply of the cell of type primary_power. In the
above example, in the absence of the 'related_pg_pin' attribute, the 'leakage_power' model
is associated with power and ground pin 'PVDD'. This change can shift the leakage power reporting
to other power supplies of the design. This can also impact the value of leakage power in the presence
of power-gating.
The following critical warning message is reported for the leakage power models without pre-defined
power and ground pin association:
Warning LCF-12: Line 38, file 'switch_cell.lib': For Cell 'switch_cell_1', 'leakage_power'
attributes does not have associated supply/pg_pin. Using 'v_vcc_in' as default supply.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 177
Preparing for Power Analysis
This improves the accuracy of power calculation for fine-grain switch cells. For example, if the
'switch_function' is evaluated as 'one(1)' based on simulation signal values, the corresponding
energy for the related arcs is calculated as 'zero(0)'.
This enhancement is available in 'CalculatePower' (average and time-based power analysis) and
'ReducePower' flows.
• If simulation data of any net that is a part of the 'switch_function' is missing, then
event-based evaluation is not performed and the following warning is reported:
VCD-306: Event-based analysis will not be performed for the switch function
'!(top.in1)' of instance 'top.x.memInst' as simulation data for
net(s): 'top.in1' is not available.
• When event-based evaluation is not performed, duty is calculated through activity propagation.
Therefore, when duty evaluates to:
'one(1)':
The energy/power of liberty cell arcs of cells that use the switched supplies as their
Power-Ground (PG) supplies is calculated as 'zero(0)'.
'zero(0)':
The energy/power of liberty cell arcs of cells that use the switched supplies as their
Power-Ground (PG) supplies remains the same.
The energy/power of liberty cell arcs of cells that use the switched supplies as their
Power-Ground (PG) supplies is scaled based on this duty value.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
178 of ANSYS, Inc. and its subsidiaries and affiliates.
Handling Designs with Multiple Power Supplies
Power Reduction
Refer section Fine-Grain Switch Cell Support (p. 375) for details of this support in the power reduction
flow.
In the absence of activity information for the cell's pin in the activity file or in the vectorless flow,
leakage power is computed using the 'mode_definition' and 'mode_value' attributes in a library.
Consider the following example of a library:
cell (test_cell) {
...
mode_definition(t*_sram_mode) {
mode_value(DSLP_*_SEL01) {
when : "AON_IN & !S_D & D_SLP & !D_SLPLV" ;
sdf_cond : "when_pm_d_slp_diodedrop_01";
}
mode_value(DSLP_*_SEL00){
when : "!AON_IN & !S_D & D_SLP & !D_SLPLV";
sdf_cond : "when_pm_d_slp_diodedrop_00";
}
mode_value(DSLP_*_SEL02){
when : "!AON_IN & !S_D & D_SLP & D_SLPLV";
sdf_cond : "when_pm_d_slp_diodedrop_02";
}
}
}
...
...
leakage_power () {
related_pg_pin : VDD;
mode(t*_sram_mode, DSLP_*_SEL01)
value : 47.628600;
}
PowerArtist can recognize modes specified using expressions such as 'DSLP_*_SEL01' and obtain
the associated leakage power. This support is enabled by the option '-mode' to the 'SetStimulus'
command:
SetStimulus -instance <instance_name> -mode <string>
This enhancement is supported in average power analysis and power reduction using the following
variable:
pa_set report_mode_based_power <true | false>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 179
Preparing for Power Analysis
Outputs
• Average Power and Reduction Reports
A section is added to the average power analysis and power reduction reports, where the 'per
supply per mode' power numbers are reported. A sample report is shown below:
<snip>
3. Power Per Mode
=================
Power(Watts)
Component Mode Supply Static Dynamic Total
--------- ---- ------ ------ ------- ------
top.x1.mInst DSLP_*_SEL0 tsn5p_*_*.VDDM 206nW 0W 206nW
tsn5p_*_*.VDD 47.6uW 0W 47.6uW
Total mode power 47.8uW 0W 47.8uW
<snip>
• APSH/Container Support
• Message
The value specified for the '-mode' option should exist in the library specified in the design. If the
mode specified with the 'SetStimulus' command is not found in the library, the following warning
is issued:
ENG-956: Mode '<mode name>' specified with the 'SetStimulus' command is not
found in any library for the following instances:
<instance name>
<instance name>
Examples
• Example 1: In this example, although there are two instances, mode-based leakage power is needed
only for one instance:
SetStimulus -instance inst_01 -mode mode_t_01
pa_set report_mode_based_power true
Note: Leakage power for the second instance 'inst_02' is then computed using the 'when'
condition expressions in the static vectors in the liberty library files.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
180 of ANSYS, Inc. and its subsidiaries and affiliates.
Running RTL Mixed-VT Power Analysis
• Example 2: In this example, there is one instance with multiple mode definitions and one mode
is selected to compute the leakage power:
SetStimulus -instance inst_01 -mode mode_t_02
pa_set report_mode_based_power true
• Example 3: In this example, wildcards are used to specify one mode across multiple instances:
SetStimulus -instance inst_0* -mode mode_t_0_x
pa_set report_mode_based_power true
To perform this optimization you must either have multiple libraries characterized at a single threshold
level or libraries characterized for multiple thresholds. Some tools, such as PowerCompiler ™, suggest
that you get superior optimization results using libraries characterized for multiple thresholds. PowerArtist
allows you to perform power analysis that takes mixed-Vt libraries into consideration and supports both
library methodologies.
Example: For this example, assume that the library provider has established conventions where
HVT implies high threshold voltage devices and LVT implies low threshold voltage devices:
default_threshold_voltage_group : "HVT" ;
In this example, unless a particular cell has a 'threshold_voltage_group' that cell is a high
VT device.
Example: Another example for a mult-Vt library is multiple cells with different
'threshold_voltage_group' attributes as shown below:
cell (NAND2_HVT) {
threshold_voltage_group : "HVT";
...
}
cell (NAND2_LVT) {
threshold_voltage_group : "LVT";
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 181
Preparing for Power Analysis
...
}
Your libraries should be defined with these attributes. PowerArtist uses the supplied strings to
differentiate threshold voltages for mixed-VT power analysis.
PowerArtist allows you to use Tcl commands to supply these attributes if they are missing from your
libraries using the 'SetVoltageThreshold' command. See the next section Categorizing Cells for
Multiple VTs (p. 182).
The 'SetVT' command is used to assign different thresholds to hierarchical instances in your design.
The methodology is based on the assumption that most customers have an idea of the typical spread
between different VT points in their modules. An example command is:
SetVT -mode percentage -instance {top.block1 top.block2} -vt_group {HVT:70 LVT:30}
In this example, the default cells of all the inferred elements that are children of 'top.block1' and
'top.block2' are chosen from the libraries used for power analysis and assigned such that '70%' of
the default cells have a 'vt_group' with the value 'HVT' and '30%' have the value 'LVT'. The standard
PowerCompiler ™default values are used. If the 'threshold_voltage_group' attribute is not
found in a cell, then the 'default_threshold_voltage_group' value is used. Instances that
are not children of 'top.block1' and 'top.block2' are assigned default cells without any
consideration for the threshold voltage attributes.
It is possible to assign the 'SetVT' command hierarchically. For example, if the 'SetVT' command is
specified for one of the instances 'top.block1.child1', it overrides the percentage values set by
the 'SetVT' command specified for 'top.block1'.
This example sets the threshold voltage string of cell names in the supplied libraries as explained
below:
• The threshold voltage string of any cell names that match the patterns '*_TL1' or '*_TL2' is
set to 'LVT'.
• The threshold voltage string of any cell names that match the pattern '*_TH' is set to 'HVT'.
Note: The 'SetVoltageThreshold' command overrides any existing threshold voltage string previously
set for a particular group.
The 'SetVT' example, in the previous section, assumes that the supplied libraries categorize the cells
based on the Liberty threshold voltage attributes. If they are not categorized this way, you must use
the 'SetVoltageThreshold' command in addition to the 'SetVT'' command.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
182 of ANSYS, Inc. and its subsidiaries and affiliates.
Running RTL Mixed-VT Power Analysis
In this example, any cells from the supplied libraries that are available for 'top.block1' and
'top.block2' with names that match the pattern '*_TL' are included in the 'LVT' threshold voltage
group. Cells that match the pattern '*_TH' are included in the 'HVT' threshold voltage group.
With mixed-VT analysis, PowerArtist selects three additional default cells for each cell type for each
threshold group. This happens even if you specify only one mixed-VT library.
In this example, PowerArtist searches for three candidate cells, one each for the default cells, one
each for the three voltage groups in the library 'mixed-vt':
SetLibrary -instance top.block1 -library mixed-vt
SetVT -instance top.block1 -vt_group {HVT:50 REG:20 LVT:30}
9.7.4. Cell Selection for Clock Gates, Inferred Buffer Tree and MBFs
Mixed-VT analysis is extended to support cell selection for clock gates, inferred buffer tree, and
multi-bit flops.
Use the 'SetBuffer -cells' command to specify buffer cells of different VT types. The option value
is a comma-separated list of cell names along with their logical library names. It is mandatory to
specify the cells of each desired VT type.
Use the 'SetVT' command to specify the desired VT percentage of the buffers cells. Each level in
an inferred buffer tree uses buffer cells of the same VT type.
SetBuffer -type root -cells { library1:cell_a1, library2:cell_b2 } \
-fanout 2
SetVT -mode percentage -instance {top} -type inferred_buffer \
-vt_group {HIGH_VT:70 LOW_VT:30}
The 'SetBuffer' command implies that the cells, 'cell_a1' and 'cell_b2', are used for the root
node of the inferred buffer tree. The 'SetVT' command implies that '70%' of all inferred buffers are
mapped to 'HIGH_VT' cells and '30%' are mapped to 'LOW_VT' cells.
Use the 'SetClockGatingStyle' command to specify clock gating cells of different VT types. The
option value is a comma-separated list of cell names along with their logical library names. It is
mandatory to specify the cells of each desired VT type.
Use the 'SetVT' command to specify the VT percentage of the clock gating cells.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 183
Preparing for Power Analysis
The 'SetClockGatingStyle' command implies that the cells 'cell_a1' and 'cell_b2' are used for
the clock gates. The 'SetVT' command implies that '70%' of all clock gates are mapped to 'HIGH_VT'
cells and '30%' are mapped to 'LOW_VT' cells.
Use the 'SetVT -type mbf' command to specify MBF specific mixed-VT percentage.
• In the non-PACE flow, by default, PowerArtist infers a single clock gate instance for all loads
driven by a common clock gate enable expression. However, if 'SetClockGatingStyle
-max_bit_width' is specified, the inferred clock gate is split into multiple clock gate instances
based on the value of '-max_bit_width'. This ensures that the inferred clock gate instance
is not driving a load higher than the specified '-max_bit_width' value. PowerArtist selects
multiple cells such that the ratio of the inferred and split clock gating cells match the VT
distribution specified with the 'SetVT' command for clock gating cells.
And its corresponding impact on the 'Cell Selection' report, where 'RVT' cells are setup as
specified in the 'SetVT' command:
<snip>
3. Cell summary of inferred clock gates.
<snip>
• In addition, PowerArtist always applies VT distribution from the user-specified 'SetVT' constraints
for clock gating cells:
SetVT -mode percentage -type clock_gate -instance ${topModule} \
-vt_group { RVT:100.0 LVT:0 SLVT:0 }
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
184 of ANSYS, Inc. and its subsidiaries and affiliates.
Running RTL Mixed-VT Power Analysis
PowerArtist also applies the VT distribution as specified through the 'SetVT' command when
enhanced clock gating (ECG) spans across more than one hierarchical instance.
• The 'SetVT' command has higher precedence over PACE clock gate cell selection when 'SetVT'
commands are specified along with PACE clock models.
To perform power gating with mixed-VT analysis, combine the power gating related commands with
the mixed-VT commands. For this example, append the following commands after the commands in
the 'mixed_vt.tcl' file:
############################################# Power Gating Commands
# rx_rq and tx_rq are sleep signals
CreateVirtualSupply -supply vdd -virtual_supply VDDRX -on top.rx_rq
CreateVirtualSupply -supply vdd -virtual_supply VDDTX -on top.tx_rq
CreateVirtualSupply -supply VDDNW -virtual_supply RX_VDDNWS -on top.rx_rq
CreateVirtualSupply -supply VDD -virtual_supply RX_VDDNWS -on top.rx_rq
CreateVirtualSupply -supply VRET -virtual_supply RX_VRET -on (!top.rx_rq)
CreateVirtualSupply -supply VDDNW -virtual_supply TX_VDDNWS -on top.tx_rq
CreateVirtualSupply -supply VDD -virtual_supply TX_VDDNWS -on top.tx_rq
CreateVirtualSupply -supply VRET -virtual_supply TX_VRET -on (!top.tx_rq)
CreateDomain -instance top.core1.r1 -virtual_supply {VDDRX RX_VDDNWS RX_VRET}
CreateDomain -instance top.core1.t1 -virtual_supply {VDDTX TX_VDDNWS TX_VRET}
MapRetentionCell -instance {top.core1.r1} -attribute CK_LOW
MapRetentionCell -instance {top.core1.t1} -attribute CK_LOW -tag NoMap -notag true
For every hierarchical instance specified in the 'SetVT' command, the report includes the total
number of default cells selected for each of the specified VT values.
Mixed-VT Cells Distribution
===========================
Hier-Instance VT Group Specified Number of Cells
Name Name Percentage Selected
------------- -------- ----------- ---------------
top.block1
HVT 50 40
REG 30 24
LVT 20 16
---------------
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 185
Preparing for Power Analysis
Total 80
-----------------------------------------------------
top.block2
HVT 50 20
REG 30 12
LVT 20 8
---------------
Total 40
If a particular default cell type is not found in the 'threshold_group' specified in the 'SetVT'
command, then default cells of that type are chosen independent of the 'threshold_group',
from the libraries that are set on that hierarchical instance. The total number of the default cells
selected are shown in an additional row where 'Other VTs' is specified under the 'VT Group Name'
column.
And a few default cells were not found for 'threshold_group' 'HVT' and 'LVT'. Then the cells
are chosen from other VTs. For this example, the following report is generated:
Hier-Instance VT Group Specified Number of Cells
Name Name Percentage Selected
------------- -------- ----------- ---------------
top.block1
HVT 90 110
LVT 10 13
Other VTs 0 7
---------------
Total 130
• Power consumed by the clock buffer (internal cell power) driving the capacitive load.
• Power due to the capacitive load.
• Load due to the cumulative input capacitance of the inputs of all clock loads.
• Capacitance due to the wiring on the clock line.
Therefore:
Pclk = (Cfanout + Cwire)V2fclk
Where:
Cfanout This value is determined by analyzing the HDL code, coupled with input capacitance
information from the technology file.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
186 of ANSYS, Inc. and its subsidiaries and affiliates.
Setting up Clock Power Analysis
Cwire The wiring capacitance is based on an estimate of the amount of wiring required to distribute
the clock. 'C wire ' therefore depends on the fanout of the net and is calculated from a wire
load model in the specified libraries.
You can either specify this wire load model for a clock net or allow PowerArtist to do the selection
based on standard wire model selection rules.
The two commands that you can use to define your clock net are:
• SetClockNet
• SetClockBuffer
The command specifies the clock buffers for which PowerArtist must infer a clock tree. If you
specify 'SetClockNet -mode trace' command, the 'SetClockBuffer' command is optional.
It is required only for inferred clock trees.
Sample Usage
Suppose you want to trace a clock named 'tclk', which has special circuitry beginning with instance
'chip_top.mux21-a' that you do not want to include in the power analysis. Also suppose that the
wire load model 'WL_05x5' should be applied to 'chip_top.tclk' and all the sub-nets that make
up this traced clock net. For these parameters, you should specify the following 'SetClockNet' command
in your command file:
SetClockNet -name chip_top.tclk -mode trace -stop_at_instance chip_top.mux21-a
Next, suppose you want to infer a clock net, 'pciclock', you should also include the following:
SetClockNet -name chip_top.pciclock -mode infer
SetClockBuffer -type root -name clkr -library lib1 -fanout 12
SetClockBuffer -type branch -name clkb -library lib1 -fanout 10
SetClockBuffer -type leaf -name clkl -library lib1 -fanout 8
And to set a wire load model for the clock net defined, you can specify the 'SetWireLoadModel'
command shown below:
SetWireLoadModel -name WL05x5 -library * -net chip_top.tclk
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 187
Preparing for Power Analysis
If there is an instance driving the clock net, PowerArtist determines the maximum fanout for the
instance output or the maximum capacitive load that the output can drive.
If there are no drivers for the net (that is, the clock net is a primary input) clock buffers are always
inserted. Using the specified buffers and their fanouts, PowerArtist synthesizes a clock tree using the
following process:
1. Calculates the number of leaf-level buffers to be inserted based on the number of clock pins
on the net, and the specified fanout for the leaf buffer.
2. Checks the branch fanout to determine how many branch buffers are needed and then inserts
branch-level buffers to drive the leaf buffers.
Using this method, PowerArtist continues to insert branch buffers, level after level, until a stage is
reached in which a single root buffer can drive all of the next branch-level buffers.
Example
If there are '100' pins on a primary clock net (no driver) and the leaf buffer fanout is '4', then '25'
buffers are inserted at the leaf-level. If the branch driver fanout is '10' and they have to drive '25'
leaf-level buffers, 'three' buffers are inserted at the branch-level. Finally, 'one' root driver is added
to drive the 'three' branch buffers.
The wiring capacitance from the root buffer to all leaf-level buffers is calculated using the wire load
model for the clock net on which the buffers are inserted.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
188 of ANSYS, Inc. and its subsidiaries and affiliates.
Setting up Clock Power Analysis
You can also control when the tracing stops by using one of the followings options for a given clock,
such as 'chiptop.CLKIN':
• -stop_at_instance
In the following example, PowerArtist stops tracing the net 'CLKIN' when it reaches the
specified instance:
SetClockNet -name chiptop.CLKIN -mode infer -gate_clock yes
-stop_at_instance { chiptop.corepinmux.coretop.pbustop.syscfg_if.SYSPLL }
• -stop_at_cell
In the following example, PowerArtist stops tracing at the cell type 'PLL':
SetClockNet -name chiptop.CLKIN -mode infer
-gate_clock yes -stop_at_cell { PLL }
In the above example, tracing continues if any instances are specified using the
'TraceThruInstance' or the 'TraceThruCell' commands.
• combinational
• combinational_rise
• combinational_fall
• three_state_disable
• three_state_disable_rise
• three_state_disable_fall
• three_state_enable
• three_state_enable_rise
• three_state_enable_fall
• rising_edge
• falling_edge
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 189
Preparing for Power Analysis
1. If you supplied a wire load model for the clock net, that wire load model is used for the clock net
and all the sub-nets in the clock tree. 'Sub-nets' are nets between clock buffers in the clock tree.
2. If you supplied a wire load model for any of the sub-nets, that wire load model is used to estimate
the capacitance of the sub-net.
3. If a wire load model was not supplied, PowerArtist uses standard area-based wire load model rules
to determine the wire load model, as is done for any net in the design, to determine the wire
load model assigned to the net.
PowerArtist then uses a heuristic algorithm to estimate the capacitances of wires between the leaf
buffers and the clock pins of sequential devices by inferring clock trees between them, if needed.
• Clock gating is performed using integrated clock gating cells that are defined using the
methodology established by Synopsys ™.
• You control which integrated clock cells are selected from the library, the clock nets that are
gated, and the minimum bit width required for a register bank to be clock gated.
• Reports that describe the clock gating performed by PowerArtist.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
190 of ANSYS, Inc. and its subsidiaries and affiliates.
Setting up Clock Gating for Power Analysis
2. Add a section to your PowerArtist Tcl command file that indicates your clock gating decisions.
For every net you want to gate, specify the following command:
SetClockNet -gate_clock yes <options>
4. Review the generated report file (.rpt) to see the clock gating results.
See the 'Running Power Analysis with Clock Gating' section in the tutorial for a sample power analysis
with clock gating.
Assuming the two register assignments are a total of 3 bits, you can insert an ICGC with 'en1' as the
enable signal. The output clock of the ICGC then becomes the clock input to the two register banks'
that have feedback muxes with 'en2' as one select line and 'and3' as the other. Assuming that 'en1'
is not enabled 100% of the time, then the clock going to the registers is toggling less often, saving
power.
Similar to synthesis tools, PowerArtist has constraints controlling the use of weak enables. There are
two commands that control the options and they are explained below:
The default value of this option is 'false'. If you set this to 'true', weak enables are
used when possible. This option is valid only when you have also specified
'-gate_clock yes'. If you do not specify '-gate_clock yes' with '-enhanced_cg
true', PowerArtist issues the following warning:
ENG-139: "Clock net XXX will not be clock gated...".
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 191
Preparing for Power Analysis
Note: The option '-enhanced_cg true' is mandatory and enables the enhanced
clock gating flow in PowerArtist.
This option locates enhanced clock gating (ECG) opportunities and takes 'low', 'medium',
and 'high' as values. The default value is 'low'. Higher the effort level, harder the tool
works to locate the ECG opportunities.
During RTL power analysis and reduction, PowerArtist extracts common weak enables
across registers to gate their clocks, modeling the effects of synthesis enhanced clock
gating (ECG). The ECG expressions can often be complex especially those involving
multi-dimensional signals. Specifying 'medium' or 'high' achieves high power and clock
gating accuracy for ECG expressions and improves QoR without impacting the runtime.
The combined bit width of all register banks gated with this weak enable must be greater
than or equal to this value. The default is '2 * -min_bit_width' constraint.
ECG can be performed for complex clock enable expressions, such as those containing a large number
of XOR operations. ECG can also recognize clock gating opportunities for wide registers, especially
greater than 512 bits.
The weaker enables are clock gated among themselves. Thereafter, any left-over bits are processed
and merged with strong enables. This improves the QoR.
The enable expressions are merged so that groups of registers that are too small to have their own
clock gate are grouped together under a common clock gate enabled with the merged expression.
For designs containing a large number of 2D signals, such as register files, you can gain additional
accuracy by trading-off runtime using the following variable:
pa_set ecg_trace_depth_regfile <integer>
By default, the value of the above variable is set to a number based on the value of the -cg_effort
option specified in the SetClockNet command. A high value (for example, 6 or more) can lead to
identification of more ECG opportunities.
Note: This is similar to the variable 'pa_set ecg_trace_depth <integer>', which is applicable
to registers that are not multi-dimensional arrays.
– There is a new sub-section titled 'Integrated Clock Cell Power for Enhanced Gating'. The
format of this section is identical to the existing section, but it contains information
describing the enhanced clock gating performed.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
192 of ANSYS, Inc. and its subsidiaries and affiliates.
Setting up Clock Gating for Power Analysis
This represents the total number of register bits gated using weak enables.
• In the power database (.pdb):
Registers that are enhanced clock gated are marked as other clock gated registers.
For ECG, to determine the common weak enable among the candidate register enable
expressions, PowerArtist uses a pseudo-random simulation and satisfiability (also known as
Sim-n-SAT or SNS) approach. This algorithm ('sns3') is enabled by default. Additionally, another
version ('sns4') of this algorithm is also available. If you enable 'sns4', it is expected to improve
runtime performance issues arising due to this ECG flow.
To improve the QoR for clock gate enables for ECG, an alternate mechanism exists for extracting
the weak enables among ECG candidate registers. It uses a combination of the 'sns3' and the
'greatest-common-factor'-based algorithms.
PowerArtist searches all Liberty files specified using the '-synlib_files' option for integrated
clock gating cells. There is no special switch for specifying the libraries containing clock gating cells.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 193
Preparing for Power Analysis
• If the required pin annotations are also missing then you can do the following steps:
1. Define the cell type and the pin types, using the 'DefineCell' command:
DefineCell -type icgc -name <icgc_cell_name>\
-pin {{clock <input_clk_pin>}{enable <input_en_pin>}{clock <output_clk_pin>}}
Use the first command if the ICGC is meant for a 'negedge' flop and the second command
if the ICGC is meant for a 'posedge' flop.
3. Define the polarity of the enable pin, using the 'SetPolarity' command:
SetPolarity -pin <input_en_pin> -value active_low -cell <icgc_cell_name>
SetPolarity -pin <input_en_pin> -value active_high -cell <icgc_cell_name>
Use the first command if the ICGC passes the clock when enable is '1'b0' and the second
command if the ICGC passes the clock when enable is '1'b1'.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
194 of ANSYS, Inc. and its subsidiaries and affiliates.
Setting up Clock Gating for Power Reduction
2. Include the following commands in your PowerArtist command file or on the command line:
• SetClockNet
This command defines which clock nets should be gated among other things.
• SetClockGatingStyle
This command defines the attributes that control how clock gating is performed.
3. Searches the libraries for all cells containing the 'clock_gating_integrated_cell' attribute
whose value matches that supplied by the 'SetClockGatingStyle -clock_cell_attribute'
command.
Note: If the library does not contain output maximum fanout information, you can specify it using
the 'SetCellDefaultFanout' command in the clock nets file.
4. Identifies the elements that are suitable for clock gating. To be suitable:
• An element must be an 'SFL' type of register. Register files cannot be clock gated.
• The clock name must match that specified using the 'SetClockNet' command (in the clock
nets file) or is traceable from such a clock.
• The 'd_in' of the register must be the output of a 2-1 feedback mux and the 'd_out' of
the register must be an input to the same mux.
• All registers sharing the same clock, enable, and reset pins are gathered together. If the
number of bits is greater than or equal to the 'min_bit_width' value, they are clock
gated. However, if you specified a list of instances with the '-instance' or
'-hierarchical' options of the 'SetClockNet' command, only those instances are
gathered together and clock gated. For more information, see 'Hierarchical Clock
Gating (p. 196)'.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 195
Preparing for Power Analysis
a. Determines the duty cycle of the select pin on the 2-1 mux driving the bits as the duty
cycle of the enable pin on the integrated clock cell.
b. Uses the gate-level power model for the integrated clock cell to calculate the power
consumed by the integrated clock cell.
c. Calculates power for the register bits that are clock gated. The clock activity for these
register bits is derated by the duty cycle for the enable pin in the clock gating cell. The
power for the feedback mux bits is reduced to zero, because these feedback components
are eliminated from the circuit.
7. Generates clock gating information in the power report (activities.rpt). It uses this
information while performing various reductions. Clock tree and clock gating information is
displayed in the PowerCanvas main window just above the tree display. If you display the clock
tree, which comes up in a separate window, you can move your cursor over the different elements
in the clock tree and the dynamic display in the main window changes as you move along. This
provides information such as Activity, Duty Cycle, Frequency, and Net Capacitance.
However, if you are using a logic synthesis tool that performs clock gating and that has a capacity
limitation, clock gating for the entire design cannot be implemented at one time. Instead, only the
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
196 of ANSYS, Inc. and its subsidiaries and affiliates.
Ideal Clock Network Modeling
large blocks in the design that form the boundaries beyond which integrated clock gating cells cannot
be shared are clock gated. You can use the 'SetClockNet -hierarchical' command to overcome
this particular situation. Assume the following design:
In this design, to synthesize and clock gate block 'b2' separately from the remainder of the design,
use the following command:
SetClockNet -name top.clk -hierarchical top.b2 -gate_clock yes
In addition, PowerArtist can perform clock gating on selective blocks in a design using the 'SetClockNet
-instance' command.
Using the example of the same design, if you want to clock gate block 'b2' but not block 'b1', then
use the following command:
SetClockNet -name top.clk -instance top.b2 -gate_clock yes
Refer to the 'SetClockNet command in the PowerArtist Reference Manual for details.
• SetMaxFanout
PowerArtist infers a buffer tree for any net with at least the given number of fanounts.
• SetBuffer
Use this command to specify the buffers used when inferring a buffer tree for these high
fanount nets.
If you do not use this feature, during inferencing, you can get a tremendous capacitive load on a
driving pin, which can lead to the inferred element.
or
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 197
Preparing for Power Analysis
Note: You can change the mode by using the following command:
SetClockNet -name <clk_name> -gate_clock yes -mode infer
Since the clock is 'ideal', the transition time in the clock network is set to '0', but you can override it
by using one of the following commands:
or
• pa_set default_clock_transition_time <double>
Note: If the load capacitance of an instantiated clock tree cell exceeds the specified 'max_capacitance',
the wire capacitance is set to '0'.
• Event propagation for inferred clock gate enables, inferred signal buffer nets, and memory enables
where an FSDB activity file is available.
This support is available in the power analysis ('CalculatePower') and power reduction
('ReducePower') flows with and is enabled by using the following variable:
pa_set event_based_analysis_signal_type <cg_enable | inferred_buffer | mem_enable>
This support is enabled by default for the FSDB, VCD, and Veloce emulator native format files.
Event-based analysis support is available only for the following cell types in the fanin cone of
the enable/input net:
– Basic RTL-type elements such as connect, and, nand, or, nor, xor, xnor, aoi, oai, or decoder.
– Instantiated cell elements such as ICGC, isolation cells, or any cell with the function type
similar to the basic RTL-type elements.
PowerArtist supports event propagation through inferred instances in RTL design providing
improved RTL power accuracy. This feature provides two benefits:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
198 of ANSYS, Inc. and its subsidiaries and affiliates.
Event-based Analysis
– Power estimation for simulation data having only power critical signals activities
PowerArtist can read a simulation activity file with power critical signals only and propagate
events to missing named and inferred signals in the design for accurate RTL power analysis.
In this flow, simulators/emulators need to write the simulation data for power critical
signals only. This improves the turnaround time for simulation/emulation and reduces
the size for simulation file.
– Improved RTL power accuracy
Micro-architectural inferencing of RTL designs results in inferred signals in the design
which are not present in RTL FSDB. PowerArtist traditionally performs statistical activity
propagation. Event propagation offers more accurate logic propagation through this
inferred logic and improves RTL power accuracy.
Notes:
– The enhancement is enabled for both RTL and gate-level instances. For gate-level instances,
only simple cell types (such as: and / or / nand / nor / mux21 / aoi21 / oai21 / aoi22 /
oai22) are supported. The complex cell types (such as: adder or decoder cell) are not
supported.
– If some design nets cannot be evaluated for activity/duty using event-based signal
propagation, the activity/duty of such nets continues to be estimated via activity
propagation.
– For event propagation to work reliably, the input simulation file should contain activity
data for the primary input/output ports, registers, latches, and memory output signals.
– The enhancement is supported for the 'CalculatePower', 'GenerateGAF', and
'ReducePower' commands and is not supported for 'CalculateToggleCoverage',
'CreateRPM', 'GenerateActivityWaveforms', and 'ProfilePower' commands. For the
enhancement to take effect, you must specify this variable 'before' specifying the
'CalculatePower' or 'GenerateGAF' commands.
– The enhancement supports multiple activity file formats including FSDB, VCD, STW (Veloce
flow), and ZTDB.
– The activity source of nets evaluated in this flow is reported as 'EVENT_PROPAGATED'
in the GUI and 'get_property' container command. If you do not enable this feature, the
activity source of nets missing in simulation is reported as 'PROPAGATED / SIMULATION'.
– The GAF flow is enhanced to ignore the nets in the following cases:
Some nets maintained their 'X-state' because the initial input value was not
available from simulation.
Some nets reported the duty value as '0.5' and toggle count as '0' because there
was no event/activity during simulation.
Ignoring such nets ensures that such nets are considered as candidates for activity
propagation during power analysis ('CalculatePower').
The activity/duty of named and inferred design nets calculated using event-based signal
propagation can change when this flow is enabled. You can view the new numbers in section
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 199
Preparing for Power Analysis
'9. Net Frequencies' of the average or time-based power analysis reports. To generate this section
after average power analysis, use the following variable:
pa_set average_report_options g
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
200 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 10: Analyzing Simulation Activity
10.1. Introduction
PowerArtist has the ability to perform flexible activity analysis on time slices as small as a clock cycle.
This is called vector analysis. Analyzing your simulation activity before you perform a power analysis
allows you to:
• Determine if your test bench exercises your design correctly. A test bench for average power differs
from a test bench for peak power.
• Potentially detect functional flaws that are difficult to see by looking at simple waveforms. For example,
if your design should be in an "idle mode" and yet you see significant activity, this might signal a
design error.
The primary method PowerArtist uses to achieve these goals is to provide you with a graph of activity
over time. PowerArtist calculates activity data using the following equation:
You run each simulation once while collecting activity data. Each run provides a graph for a specific
slice of the simulation time, showing the activity for selected portions of the design on the Y axis and
time on the X axis. The portions of the design are called groups.
Each group corresponds to one line waveform on the graph, and can consist of any number of hierarchical
instances of your design. The activity analysis includes the children of the defined instance. It averages
the activities of all nets in the design below the top level (as defined in the group). While activity is
only an indicator of power, displaying the average activity for each of the top-level blocks highlights
test suites that fail to access all blocks on the chip at once, resulting in artificially low power results.
The term 'activity' is used to describe the average activity of named nets in the group. Named nets are
nets that have been explicitly specified in a simulation and appear in a simulation dump, which would
include the boundary pins.
• Simulation time-based
In simulation time-based mode, the average activity of the group is graphed over time.
• System clock-based
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 201
Analyzing Simulation Activity
In system clock-based mode, the ratio of the average frequency of the group to that of the clock
is reported.
Chapter Organization
The following topics are covered in this chapter:
• System design
You may want to know the activity for all the memories on the chip, for overall clock activity, or for
overall I/O pad activity.
• RTL design
You may want to define each top-level block as its own group. In this way, the tool can display graphs
of activity-over-time for each block. You can raise the activity coverage of your RTL test suite by
making sure that the simulation patterns exercise all the blocks at once. You should also capture the
activity of the primary inputs of your chip. You can compare these against similar activity graphs
from your gate-level design to make sure you have the same testbench driving both. This is a useful
check if you are doing RTL-to-gate correlation studies or comparisons.
• Gate-level design
Define activities on the primary inputs of your chip. Verify that the activity is the same at the gate-level
as at the RT-level.
1. Simulate your design to create a simulation activity file in any of the supported formats.
3. Perform vector analysis to create analysis graphs of activity over time for specific groups of instances.
See Creating Analysis Graphs (p. 203) for more information.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
202 of ANSYS, Inc. and its subsidiaries and affiliates.
Creating Analysis Graphs
At this point, you may want to use the tool's feedback to improve the simulation test suite for better
coverage of high-activity conditions. See Creating Analysis Graphs (p. 203) for more information.
5. Once you have confidence that your testbenches exercise the design completely, you can use
additional tools to find power peaks and graph power-over-time. See Analyzing Time-Based
Power (p. 255) for more information.
Before you begin to find low-activity modules, you should already have a PowerArtist scenario file and
a simulation file. See Acquiring Simulation Data (p. 207) for information on how to capture simulation
data. You can run vector analysis using a command-based (Tcl-script) flow, which is explained in the
next section.
• clock-cycle mode
• time-based mode
When you perform a vector analysis, you should align your intervals so that the dominant clock edge
of your choice is at the first interval start time and that each interval is some multiple of the clock
period. If you choose the 'activity_per_cycle' option this happens automatically. If you choose
the 'frequency_per_interval' option, you have to choose the interval start time and the interval
size carefully. The benefit of the 'frequency_per_interval' option is that it offers more flexibility
if you do not want to align your intervals with a clock edge.
1. Specify the 'DefineGroup' command to define groups of hierarchical instances in the chip, as
shown in the example below:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 203
Analyzing Simulation Activity
This example defines four groups named 'top', 'core', 'pci' and 'rxchan' whose activity graphs
are generated for their associated instances.
2. Specify the 'GenerateActivityWaveforms' command to run the vector analysis. You can use
different options depending on the type of vector analysis you want to run:
3. View the resulting FSDB or PTCL file in the Waveform Viewer. A sample waveform is shown below:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
204 of ANSYS, Inc. and its subsidiaries and affiliates.
Creating Analysis Graphs
The 'DefineGroup' command creates waveform groups by identifying the category of a net as
determined by its driving instance. This automates the 'per-category' monitoring of activity waveforms
instead of having to manually create the groups of nets.
The following example shows how to specify three groups to monitor different net categories during
activity analysis:
1. Group output nets of combinational logic and macros in the hierarchy 'top':
DefineGroup combo_macro "top" -category { combinational macros }
3. Group clock nets of registers, latches, and memories in the hierarchy 'top.core1.t1':
DefineGroup clock_core1_t1 "top.core1.t1" -category { clock }
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 205
Analyzing Simulation Activity
4. Create waveforms for the groups created in steps #1 to #3, by using the following commands:
pa_set activity_waveform_group_list \
{ combo_macro reg_latch_core1_r1 clock_core1_t1 }
GenerateActivityWaveforms \
-log wwgaf.activity_vw.log \
-activity_waveform_graph_type activity_per_cycle
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
206 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 11: Acquiring Simulation Data
11.1. Introduction
This chapter describes how to acquire data from a simulation testbench so that power analysis can
provide the most accurate results. PowerArtist provides the three approaches to acquiring of simulation
data, all of which produce a simulation activity file. In general, the approach that you choose depends
on your design language (VHDL or Verilog), the level of abstraction, and the simulator you are using.
If you are doing RTL VHDL designs, you should choose either FSDB or IAF since these formats have the
capability to store the composite data structure information that is typical of VHDL designs. If you are
doing RTL Verilog, then any approach works. If you are doing large gate-level designs (most likely in
Verilog), the FSDB format is preferred because it more efficiently stores toggle information. In general,
if you can create an FSDB file, use that approach. It is fast, compressed, complete, and consistent across
all simulators in its naming conventions.
If you have instantiated gates in your design, you need to pay particular attention to the amount of
detail you capture in your format of choice. An instantiated gate may be as simple as a flip-flop or as
complex as a memory. If it has a power model in Liberty format, it is a gate. When your simulation runs,
it monitors and writes the nets in your design. If the monitored instance is a gate-level instance, some
simulators do not capture the nets local to the instance. Some of these local nets represent the ports
of the instance. Whether or not ports are monitored for gate-level instances is very critical to know
when performing power analysis.
To perform average power analysis, you should monitor the ports of all gate-level instances. This is not
required to perform time-based power analysis. You lose a little accuracy when trying to perform an
analysis of tri-state gates, but the improvement in performance is quite significant.
Chapter Organization
The following topics are covered in this chapter:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 207
Acquiring Simulation Data
Memory and MDA (Multi-Dimensional Arrays) value changes are captured by the following group of
Novas system tasks:
$fsdbDumpMem
$fsdbDumpMDA
You can use the '$fsdbDumpvars' task to dump all scalar, vector, and memory/MDAs on struct signals.
For example:
$fsdbDumpvars(top, "+all");
$fsdbDumpfile
dumps all scalar, vector, memory/MDA, and struct signals under the 'top' instance and all of its
hierarchical children. In contrast, VCD files cannot capture memory, MDA, or struct signal types. If these
language features are used in the RTL, a VCD has poorer signal coverage for the design, impacting the
accuracy of the RTL power analysis.
If the design is VHDL (or mixed), then you can enable variable tracing under 'process' by using the steps
listed below:
The above works with IUS6.2, VCS 2006.06, ModelSim 6.4 onwards.
If your FSDB file contains either a larger than necessary time window or levels of hierarchy above the
top module of the power analysis, use 'fsdbextract' to create a smaller FSDB file, enabling faster
performance from CalculatePower. Consider the following exmple:
% fsdbextract my.fsdb -bt 100us -et 200us -s /testbench/top -level 0 -o my_100us-200us_top.fsdb
Once you have an FSDB file, you need to specify it using the '-activity_file' option of the
CalculatePower command.
The idea is to generate 'N' time-sliced FSDB files. The time-sliced files are smaller, and are easily
processed and re-constructed internally by PowerArtist. Generation of time-sliced FSDB files is best
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
208 of ANSYS, Inc. and its subsidiaries and affiliates.
Using an FSDB Approach
done during simulation, using the following Springsoft system tasks to dump multiple FSDB files of
specified size:
• For ModelSim/NCSim:
$fsdbAutoSwitchDumpfile
Example:
$fsdbAutoSwitchDumpfile(10, "slice.fsdb", 3);
• For VCS:
$fsdbAutoSwitchToFile
Example:
$fsdbAutoSwitchToFile("signal.list", "slice.fsdb", 10, 3);
The above example commands generate 3, 10MB FSDB files with same hierarchy, but different time
slices. The file names are: 'slice_000.fsdb','slice_001.fsdb', and 'slice_002.fsdb'. These
files can be processed by PowerArtist for power analysis (average and time-based) and power reduction
as shown below:
• Power reduction:
ReducePower -activity_file "slice_000.fsdb" -to_fsdb_index 2
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 209
Acquiring Simulation Data
• Availability of Verdi licenses. A license is required for each process that reads a Virtual FSDB.
If the FSDB you supply to PowerArtist is not a Virtual FSDB, PowerArtist uses the 'FFR API' by default.
The generated log file indicates whether the 'FFR API' or the Synopsys 'NPI API' was used.
PowerArtist issues an error and exits if you attempt to use the FFR interface to read Virtual FSDB files.
An error is also reported if NPI libraries are not provided for Virtual FSDB files. However, you can use
the FFR API to read virtual FSDB files of type 'NONE'.
The table below lists the Virtual FSDB types, and the API supported in PowerArtist:
By default, PowerArtist uses 'FFR API' to process regular FSDBs and 'NPI API' for virtual FSDBs.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
210 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Standard VCD Approach
Important Note: You can choose the FSDB reader by using the 'pa_set' variable only. Specifying it
as an option on the command line does not work. For example, the following command does not
change the FSDB Reader to NPI:
CalculatePower -analysis_type time_based -fsdb_reader_method npi
To enable this support, add the path to the Verdi installation to the 'LD_LIBRARY_PATH' environment
variable. An example is shown below:
setenv LD_LIBRARY_PATH = /<Synopsys_Installation>/verdi/<version>/FsdbReader/LINUX64
Also, because this approach creates a large file, Ansys recommends that you compress the resulting
VCD file while the simulation is executing using a named pipe. To do this, see Creating a Named Pipe
to Manually Compress VCD Files (p. 212).
2. Execute the following command when the simulation is finished to ensure that all data has been
written to the VCD file:
vcd flush
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 211
Acquiring Simulation Data
1. Execute the following commands before beginning simulation, either from the command-line or
as s part of a Tcl input file:
database -open your_vcd_file_name -vcd
probe -database your_vcd_file_name -all -depth all
This method does not work if the first tool requires the name of a file to write data into or if the
second tool requires the name of a file to read data from.
UNIX provides a slightly different method for that case called a 'named' pipe. You can execute a UNIX
command to create a special file that is actually a pipe. As the first tool writes data to this file, it is
buffered and sent to the second tool, just as if the pipe were specified on the command-line. The
'named' pipe lets you run the simulator and a file compression program (such as 'compress' or
'gzip') at the same time, passing data using a pipe.
Ansys recommends using 'gzip, because it is automatically detected by the wwgaf conversion utility.
Use the following process to create a compressed VCD file using named pipe:
The 'mknod' command is located in a system directory (such as '/etc' or '/usr/sbin') that may
not be in your execution path.
4. Execute the simulator and start your compression program. Both must be done in the background:
mysim -f startup_file &
gzip < my_pipe > dump.vcd.gz &
In this example, 'mysim' is the simulator executable and 'gzip' is the compression program. The
characters '<' and '>' are UNIX redirection characters. Using these characters redirects the output
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
212 of ANSYS, Inc. and its subsidiaries and affiliates.
Acquiring Simulation Data in Palladium Flows
of 'my_pipe' to the input of 'gzip'. The output of 'gzip' is directed into a file called
'dump.vcd.gz'. You can delete 'my_pipe' when the compression program is finished.
Note: The 'wwgaf' utility automatically recognizes 'gzip' files, therefore, you do not need to pipe
gzipped files in 'wwgaf'. If you use any other compression program, you have to pipe data into
'wwgaf', as shown in the example below:
uncompress -c my_vcd_file.vcd | wwgaf -iaf -
Notes:
• Due to this support, if the design has multi-dimensional nets, there may be more entries in
the GAF file, which may cause the power numbers to change.
• Certain simulators define multi-dimensional nets that are recognized by PowerArtist as
'A[3:0][2:0]' as 'A(3:0)[2:0]' in the VCD file. Such nets are still not processed by
PowerArtist and miss simulation activity. One approach to handle these nets is to post-process
the VCD file and convert 'A(3:0)[2:0]' to 'A[3:0][2:0]' as input to PowerArtist.
The Palladium ™ series of accelerators/emulators from Cadence has the ability to output toggle
information in FSDB or VCD file formats. They also have the ability to take a list of nets that should be
monitored and record only the toggle information for those nets in the resulting FSDB or VCD file.
PowerArtist requires critical nets to be monitored to perform an accurate average power analysis. The
Elaborate command accepts the following option:
-list_required_traces <filename>
The specified file contains the nets to monitor. This file is formatted so that it contains one net name
per line. The net name contains its hierarchical instance name path in the design. Consider the following
example:
Elaborate -list_required_traces trace.dat
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 213
Acquiring Simulation Data
In this example, the file 'trace.dat' is created in your current working directory and has the following
format:
top.in[1]
top.in[2]
top.clk
You need to write a simple script that post-processes this file into the format your Palladium hardware
requires and include the resulting file as part of your Palladium setup environment. The resulting FSDB
or VCD file contains only the toggle information for those nets.
This flow works for both RTL, mixed RTL and gate, and pure gate-level designs. The following nets are
monitored in your design:
• Nets connected to all of the primary ports (inputs and outputs) of the design.
• Nets connected to all of the ports of instantiated gates that are recognized as:
– Memories
– IO cells
– Flip-flops
– Latches
– ICGCs (Integrated Clock Gating Cells)
– Macro cells with pin counts greater than 10 and that are not flip-flops
– Macro cells with bussed pins
– Tri-states
– MUX select line (not output or input ports)
• Nets connected to all the ports of inferred elements (RTL components) that are recognized as:
– Registers
– Latches
– Tri-states
– Regfiles
– Latchfiles
– MUX/UNMUX select line (not output or input ports)
If your design contains RTL code, then perhaps the net to be monitored is an inferred net that is not
present in your design source code. Therefore, all the named nets that form the immediate fan-in cone
of logic for the inferred net need to be monitored. Therefore, Elaborate traces back from an inferred
net through inferred combinational logic instances (and, or, nand, nor, xor, xnor, connect and connect_inv)
until it reaches the set of named signals that are needed to capture the toggling activity for that signal.
Palladium converts everything to uppercase so you need to run Elaborate with the
'-case_insensitive' and the '-list_required_traces' options. The output list contains IOs,
state points and clock enable signals for monitoring in the Palladium simulation. You need to convert
the output list to uppercase. You can do this by using the 'tr [a-z] [A-Z]' command. The resulting FSDB
output from Palladium is 15-20X smaller in size without sacrificing accuracy. The additional advantage
for Palladium is that the simulations are now much faster and there is no need to maintain terabytes
of data. After running Elaborate, run CalculatePower with default pin-based estimation (that is,
'-arc_based_estimation' is set to 'false').
For additional information, see Analyzing Average Power Using a SAIF File (p. 243).
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
214 of ANSYS, Inc. and its subsidiaries and affiliates.
Troubleshooting Tips
If your Verilog file does not include a specification of the simulation time, the simulator uses a default
value. For some simulators, the default is one second per clock cycle. If your signal changes every
clock cycle but the simulator time step defaults to one second, when you import this data and run
an analysis with a clock of 10 Mhz, the simulation data for the signal indicates that it changes only
once per 10 million clocks. This results in a very low estimate of power for that net and the modules
it drives.
Therefore, if you had set '$MODEL_TECH', it is possible that the above path does not resolve to the
correct location. If you run into this situation, simply unset the environment variable:
unsetenv MODEL_TECH
The make_mti_mapfile executable then uses ModelSim utilities to return a value for '$MODEL_TECH'.
1. It causes inputs and outputs of cells with power models to change in the same time step.
Simulators often do not ensure that when they create simulation traces either via PLI routines
or VCD files, input changes always appear before output changes.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 215
Acquiring Simulation Data
If you perform unit delay simulation or back-annotate delay information to your simulation,
the output changes in a later time step and a power vector is matched, assuming that one
is present in your library files. This problem does not occur when you specify the
'CalculatePower -analysis_type time_based -zero_delay true' command.
The '-zero_delay true' option forces the time-based power calculator to try to re-order
events that happen in each time step so output changes follow input changes. This switch
improves your results but you incur increased run time due to the sorting of signal toggles
for every time step in your simulation file.
2. Zero-duration glitches occur. These are multiple toggles on nets that occur during the same
time cycle. These may result in too many power arcs being matched and power being over
estimated. This problem is also addressed if you specify the 'CalculatePower
-analysis_type time_based -zero_delay true' command.
To accurately analyze power, you must at a minimum use unit delay simulation and at best
back-annotate delays and simulate your design. The following example is a section of a VCD
file that exhibits both problems:
#40551
0T"
0S"
#136520
1S"
1T"
0S"
0T"
Note: At timestep #40551, the output toggles before the input so a potential power arc
match is missed. Timestep #136520 shows the same net toggling multiple times in one time
step. In this case, the arc missed in #40551 is actually recognized twice.
3. Using VCS, the function simulator from Synopsys. VCS eliminates simple buffers like those
found in the clock network. The generated VCD file has all nets in the clock network sharing
the same VCD id code, which causes poor performance when running 'CalculatePower
-analysis_type average'. When this happens, the 'CalculatePower.log' file
contains an error message that all nets are not monitored.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
216 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 12: Analyzing Simulation-Based Average
Power
12.1. Introduction
You can run PowerArtist average power analysis on RTL, gate-level, and mixed RTL and gate designs.
Before you run average power analysis, Ansys recommends that you read Preparing for Power
Analysis (p. 167), which describes prerequisite steps you need to perform before you begin a power
analysis. Ansys also recommends that you run through PowerArtist Tutorial Part I: Power Analysis (p. 19)
to learn how to run the command-line flow for average power analysis.
Chapter Organization
The following topics are covered in this chapter:
1. Simulate your design and generate simulation data in the FSDB, IAF, or VCD formats.
2. Build a scenario file using the 'Elaborate' command. For details, see Getting Your Design into
PowerArtist (p. 133).
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 217
Analyzing Simulation-Based Average Power
3. Run vector analysis using the 'GenerateActivityWaveforms' command. For details, see Analyzing
Simulation Activity (p. 201).
4. Run the 'CalculatePower -analysis_type average' command. Details for this process
are documented in this chapter.
5. View the reports created by the 'CalculatePower' command in the following ways:
• Text format
• PowerArtist GUI - this is the information stored in the power database.
• -activity_file <your_simulation_file>
Specifies an input stimulus file generated after a functional simulator run. The file may be in
FSDB, VCD or IAF (generated by PowerArtist PLI routines) format. You must specify
'-activity_file' or '-vectorless_input_file' for average power analysis. The
'CalculatePower' command automatically determines the type of the simulation activity file.
• -gaf_file <your_gaf_file>
• -scenario_file <your_scenario_file>
Specifies the scenario file you generated using the 'Elaborate' command. For more information,
see Getting Your Design into PowerArtist (p. 133).
Adds the specified file or Tcl list of files to the list of Liberty library files. You can also use the
'ReadLibrary' command to specify the Liberty libraries to read.
• This option specifies the instance in the simulation hierarchy that corresponds to the top-level
instance in the scenario file. The value in the '-top_instance' option is specified as a dot
(.) separated name in which the dot is used as the hierarchical separator regardless of the
simulator used. For example: 'testbench.corelogic_0'.
You should also specify the following additional options to control your analysis:
• -start_time <string>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
218 of ANSYS, Inc. and its subsidiaries and affiliates.
Running a Power Analysis in Full Simulation Mode
Use this option to specify the starting point. The time at which to begin power analysis.
• -finish_time <string>
Use this option to specify the stopping point. The time at which to stop the conversion of
simulation data before the point when the simulation stopped. This option is also needed if
simulation time ends long after the last signal toggle occurred. Otherwise, the average power
numbers are incorrect.
By using '-start_time' and '-finish_time', you can perform a variety of 'what-if' scenarios
without having to recreate the simulation activity file.
Use this option if you have a gate-level design. For details, see Performing Gate-level Power
Analysis (p. 230).
Use this option if you have an IAF, VCD, or FSDB file that does not match your scenario file.
For details, see Running Analysis with Incomplete Simulation Data (p. 225). You will also need
to specify this option if you have a partial stimulus file. For details, see Analyzing Average
Power Using Partial Stimulus Files (p. 245).
• -mode_file <filename>
Use this option to perform mode-dependent power analysis. For details, see Running Modal
Analysis (p. 231).
• -allowed_x_time <string>
Simulations of large designs can result in a significant number of signals never leaving the 'X'
state. This is particularly true for gate-level designs. This can severely compromise the accuracy
of your results. The section 'Transition Counting on Nets' in the PowerArtist Reference Manual
describes how to control some of the effects for RTL designs. The 'X' states in gate-level designs
cause power to be underestimated since power vectors modeled in your power library do not
match transitions to and from 'X' states.
This means that an 'X' state of duration greater than '10ns' occurred '54,102' times during
the simulation run. The message can be interpreted as:
– 'one' signal in the 'X' state '54102' times.
or
– '54102' signals, 'one' time.
If you see this message with an unexpectedly large number of signals, it is an indication that
your test bench is not sufficiently robust for performing power analysis. Use the
'-allowed_x_time' option to control the duration of 'X' state.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 219
Analyzing Simulation-Based Average Power
By default, the 'CalculatePower' command checks if a Global Activity File (GAF) file exists. If the GAF
(.gaf) file does not, it automatically runs the processes to analyze your simulation data as part of the
activity analysis phase. If the GAF (.gaf) file exists, it then checks to see if any options (or option values)
have changed since the last time you ran the 'CalculatePower' command. If they have changed, it
analyzes the simulation data. If they have not changed, it skips the simulation data analysis phase and
proceeds directly to the power analysis phase.
If you use '-use_existing_gaf true', PowerArtist uses the existing GAF file for power
analysis even if it determines that it is out of date.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
220 of ANSYS, Inc. and its subsidiaries and affiliates.
Controlling the Analysis of Simulation Data
Command-Line Flow
To use 'GenerateGAF' in the command-line flow, run the following steps:
2. Run the 'CalculatePower' command to read the GAF file and calculate average power:
CalculatePower -analysis_type average
-use_existing_gaf true
-gaf_file <filename>
Example
GenerateGAF -activity_file top.fsdb -top_instance tb.top
-scenario_file top.scn -start_time 1000ns -finish_time 2000ns
-gaf_file top.gaf
The commands read the FSDB and scenario file, generate the GAF file, and then calculate average
power using the GAF file just created. Remember to specify '-use_existing_gaf true, otherwise
dependency management may force the recreation of the GAF file with many default options.
Refer to the PowerArtist Reference Manual for the complete syntax of the 'AddGAF' command.
Examples
This section illustrates three examples that can help you determine the best way to assign weights
for a GAF file:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 221
Analyzing Simulation-Based Average Power
For this example, assume that you have two GAF files, 'A.gaf' and 'B.gaf', that represent
the design running in two different modes. In addition, you know that the design is in mode
'A' '90%' of the time and in mode 'B' the remaining '10%' of the time. In this case, you can
assign a weight of '0.9' to 'A.gaf' and a weight of '0.1' to 'B.gaf'. Use the following
'AddGAF' commands to assign the weights:
AddGAF -file A.gaf -mode mode_A -percent 0.9
AddGAF -file B.gaf -mode mode_B -percent 0.1
For this example, assume you have four different GAF files of the same simulation run time
(that is, simulation duration) and that none of them represent a specific mode. In this case,
you can set the weight for each GAF to '0.25'. Use the following 'AddGAF' commands to
assign the weights:
AddGAF -file A.gaf
AddGAF -file B.gaf
AddGAF -file C.gaf
AddGAF -file D.gaf
As you have not specified the '-percent' option, it is calculated as '0.25'. You can also
specify them individually as shown in the previous example.
If you have four GAF files for different lengths of time, you can assign weights based on their
simulation run times. For example, assume their run times are '500ns', '350ns', '100ns', and
'50ns'.
In this case, you can specify the weights as '0.5', '0.35', '0.1', and '0.05' respectively. These
weights represent the percentage of the run time each GAF took. In this example, the total
run time is '1000ns'.
Note: There is no specific recommendation for the values you should use for assigning weights.
The value you assign depends on the nature of the various '.gaf' files and the purpose of
the simulation that created the VCDs.
• When you simulate a very large design or for a long duration, one activity file is created. Large
FSDB files are known to cause significant performance problems. Therefore, you can split the
run into multiple FSDB files.
• When you have a variety of simulation scenarios, you may want to combine them into a single
power analysis run.
The simulation files may have different durations or their relative importance may be different. But,
you may want to weigh the impact of a particular simulation run more highly than others. In both
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
222 of ANSYS, Inc. and its subsidiaries and affiliates.
Controlling the Analysis of Simulation Data
cases, the same top-level design unit must be specified for each run. This is because the same scenario
file must be used for all the runs and the top module must be the same in each resulting GAF file.
The simplest way to assign weights is to use the 'AddGAF' command. The purpose of this command
is to allow you to specify all the information 'CalculatePower' needs to run multiple testbench analysis.
Command-Line Flow
To use this feature, perform the following steps:
2. Specify the 'AddGAF' command with optional percentage weights for each file:
AddGAF <arguments_for_GAF_file>
Note: If you have three stimulus files, the 'CalculatePower' command reads the results of all three
GAF files and generates a 'Multiple Testbench Control File (p. 223)' that is stored in your current working
directory as 'pashell.mtcf'.
Refer to the PowerArtist Reference Manual for the complete syntax of all the commands.
One such list is generated for each GAF file. It records the data exactly as you specified using the
'AddGAF' command. Therefore, you can also specify the variable 'multiple_GAFs' instead of the
'AddGAF' command. For example, you can specify the following command:
pa_set multiple_GAFs {
{-file inputs1.gaf -report inputs1.rpt}
{-file inputs2.gaf -report inputs2.rpt}
{-file inputs3.gaf -report inputs3.rpt}
}
This 'multiple_GAFs' command is converted into commands in a 'Multiple Testbench Control File'
named 'pashell.mtcf'. For the above 'multiple_GAFs' command, the following 'pashell.mtcf'
is generated:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 223
Analyzing Simulation-Based Average Power
12.4.4. Using the Multiple Testbench Feature to Control FSDB File Size
While the Synopsis Verdi™ product is able to generate large FSDBs, their utilities are not optimized
to handle them. An FSDB file is considered to be 'large' if its size is at least 500 MB. If you attempt
to run the 'fsdb2vcd' or 'fsdbmerge' commands and the process appears to hang or starts to swap
due to limited memory, you need to reduce the size of your FSDB file.
There are two techniques to accomplish this goal and they are documented in the 'Verdi Reference
Manual':
• Capture the FSDB file for only the simulation duration absolutely needed.
• Split the one FSDB file into multiple FSDB files during your simulation run.
This section applies to the second technique. It describes how you can use PowerArtist's multiple
testbench feature to process multiple FSDB files to get an average power number.
You can control the size and number of output FSDB files by using the following PLI command to
generate them:
$fsdbAutoSwitchDumpfile (max_fsdb_filesize,"root_fsdb_filename", total_num_fsdb_files)
As per this example, the size of the generated FSDB files is not greater than 2MB, the root name is
'activities.fsdb', and a total number of three FSDB files are generated.
Note: If the design cannot be managed with only three FSDB files, the '$fsdbAutoSwitchDumpfile'
command appends to the previously generated files-beyond the maximum size you set in the
command.
Recommended Flow
You should use the following flow:
1. Use the following command to start recording simulation value changes to the FSDB file at
the point at which you want to perform a power analysis:
$fsdbDumpvars
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
224 of ANSYS, Inc. and its subsidiaries and affiliates.
Re-Using a Stimulus File from a Previous Run
2. Use the following command to temporarily stop recording to the FSDB file. This command
does not set the finish time of the FSDB file:
$fsdbDumpoff
3. Use the following command to stop and finish recording to the FSDB file. This command sets
the finish time of the FSDB file:
$fsdbDumpfinish
4. Use the testbench control file methodology to run the power analysis:
a. Run the 'GenerateGAF' command on the FSDB files and generate the GAF files
'1.gaf', '2.gaf', and '3.gaf'.
b. Specify the following information for each of the resulting GAF files:
• Set the simulation time to '20', '20', and '60'.
• Add the simulation times to ensure that the total is 100 (20+20+60=100).
• Specify the percentage/weightage of the total simulation time for each GAF
file as '.2' for '1.gaf', '.2' for '2.gaf', and '.6' for '3.gaf'.
c. Write the 'AddGAF' commands that capture this information for each GAF:
AddGAF -file 1.gaf -percent .2 -report 1.rpt
AddGAF -file 2.gaf -percent .2 -report 2.rpt
AddGAF -file 3.gaf -percent .6 -report 3.rpt
This flow generates 'Multiple Testbench Control File' named 'pashell.mtcf', the 'fulltest.rpt'
file contains the correctly scaled, final power numbers, and the 'fulltest.pdb' contains the correctly
scaled, final power numbers annotated to the design netlist.
Note: When you run with this option, only some nets have '.gaf' data associated with them, as opposed
to the full simulation mode in which all nets are assumed to have '.gaf' data available.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 225
Analyzing Simulation-Based Average Power
your stimulus file gets re-read. If you want to prevent that from happening and you want to re-use the
existing GAF file created by a previous run, you must specify the following option:
-use_existing_gaf true
• Generate individual SCN files (via the 'Elaborate' command) for each such
hierarchical/block-level instance and estimate power for the block(s) using the corresponding
block-level activity/simulation file(s).
• Generate the top-level SCN file once and use it to perform block-level power analysis for the
block of interest. You can enable this flow using the following variable:
pa_set block_design_instance <hierarchical_instance_name>
The GAF file generated with the 'GenerateGAF' command has entries starting with the top
name. For example, the GAF file generated by the command 'pa_set
block_design_instance top.core1.t1', contains the following entries:
top.core1.net1
top.net2
...
Note: In this flow, when power is estimated for the top-level (while the simulation data is available
for only one hierarchical block/instance), there may be loss of accuracy for the top-level (when
compared with the case where simulation/activity file is available for the top-level). This is because
the activity information for the remaining blocks is not available, and the activity calculation for those
blocks relies on the probabilistic activity propagation (or the vectorless flow, if used).
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
226 of ANSYS, Inc. and its subsidiaries and affiliates.
Performing Power Analysis with Block-level Simulation Data
Default: 'false'
In this flow, power is estimated for the hierarchical/block-instance specified in the 'pa_set
block_design_instance', even when the .scn file is generated for the top-level and the GAF file
generated with the 'GenerateGAF' command has entries starting with the block name. For example,
when the following commands are specified:
Elaborate -top top
pa_set block_design_instance top.core.t1
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 227
Analyzing Simulation-Based Average Power
The 'MergeGAF' command combines multiple GAF files generated from the block-level simulation
activity files. This flow requires you to execute the following three commands:
1. Run the 'GenerateGAF' command separately for each block-level simulation file to generate
individual GAF files.
Note: These GAF files are generated with top-level design hierarchy.
2. Merge the GAF files using the 'MergeGAF' command to create a single top-level GAF file.
You can also compute top-level power with a single block-level simulation activity file. The
following variable is enhanced to enable this:
pa_set block_design_instance <hierarchical_instance_name>
For a single block-level activity file, you do not need to execute 'Step #2' above.
Flow 1
In the following example, simulation data for two hierarchical blocks and the top-level is available.
1. Generate top-level GAF file from block-level simulation data using the 'GenerateGAF
-block_design_instance' command. The nets in the GAF file refer to the instance 'top':
GenerateGAF -block_design_instance top.core1.t1 \
-top_instance testbench1.dut_top.top.core1.t1 \
-gaf_file t1.gaf \
-activity_file top_t1.vcd
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
228 of ANSYS, Inc. and its subsidiaries and affiliates.
Performing Power Analysis with Block-level Simulation Data
2. Merge the generated GAF files into a single top-level GAF file using the 'MergeGAF' command:
MergeGAF -output_gaf_file top_merge.gaf \
-gaf_file_list { t1.gaf r1.gaf top_sparse.gaf }
3. Perform power analysis on the merged GAF file using the 'CalculatePower' command:
CalculatePower -analysis_type average \
-gaf_file top_merge.gaf -use_existing_gaf true
Flow 2
In the following example, simulation data (fetched at different times and conditions), is available for
the top-level through multiple simulation files.
1. Generate top-level GAF file from the top-level simulation data using the 'GenerateGAF'
command:
GenerateGAF -top_instance testbench1.dut_top.top \
-activity_file top_1.fsdb \
-start_time 6071580ps \
-finish_time 12135580ps \
-gaf_file top_v_1.gaf
2. Merge the generated GAF files into a single top-level GAF file using the 'MergeGAF' command:
MergeGAF -output_gaf_file top_merge.gaf \
-gaf_file_list { top_v_1.gaf top_v_2.gaf top_all.gaf }
3. Perform power analysis on the merged GAF file using the 'CalculatePower' command:
CalculatePower -analysis_type average \
-gaf_file top_merge.gaf -use_existing_gaf true
Flow 3
In this flow, you can combine multiple GAF files (with the same 'top') with contiguous and
non-overlapping time intervals to create one combined GAF file. The GAF files to be merged must
meet the following criteria:
• The file must be generated from the same block (have the same top) or top-level instance.
• The simulation time of these files should be contiguous and non-overlapping.
In the following example, the simulation time of the first GAF file is '0us-5us', the second GAF file
is '5us-10us', and the third GAF file is '10us-15us'. You can combine these GAF files into a combined
GAF file for the complete simulation time of 0-15us.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 229
Analyzing Simulation-Based Average Power
1. Generate top-level GAF file from the top-level simulation data using the 'GenerateGAF'
command:
GenerateGAF -top_instance testbench1.dut_top.top \
-activity_file top_1.fsdb \
-start_time 0us -finish_time 5us \
-gaf_file top_v_1.gaf
2. Merge the generated GAF files into a single top-level GAF file using the 'MergeGAF' command:
MergeGAF -add_non_overlap_gafs true \
-output_gaf_file top_merge.gaf \
-gaf_file_list { top_v_1.gaf top_v_2.gaf top_v_3.gaf }
3. Perform power analysis on the merged GAF file using the 'CalculatePower' command:
CalculatePower -analysis_type average \
-gaf_file top_merge.gaf -use_existing_gaf true
• pin-based
By default, PowerArtist uses pin-based power estimation, which does not do arc monitoring. Arc
monitoring requires the ports of the instances to be output into your simulation data file, not
just the nets connected to the ports of the instance. This method is somewhat faster and
consumes less memory than the arc-based method, at the cost of some accuracy. Arcs are
monitored for the following instances:
– IO pads
– instantiated memories
– non-memory cells containing bus pins
– macro combinational cells with 11 or more pins
To enable arc monitoring for additional cells and instances, use the 'MonitorArcs' command.
• arc-based
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
230 of ANSYS, Inc. and its subsidiaries and affiliates.
Running Modal Analysis
To perform arc-based estimation for all gate-level instances, specify the 'CalculatePower
-arc_based_estimation true' command.
The format for a mode file for simulation-based power analysis is shown here:
$mode " boolean_expression "
$report file_name
$result file_name
Examples
• Example 1: A sample mode file is shown below:
$mode top.counting_off
$report counting_off.rpt
$mode top.counting_on
$report counting_on.rpt
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 231
Analyzing Simulation-Based Average Power
– The names of the signals must be in the VCD file and must be rooted at the topmost scope
(or testbench scope) in the VCD.
Using a mode file containing 'n' different modes, results in 'n+1' report files. One report file is generated
and named for each mode and one report file is generated for the entire simulation.
For this mode file, PowerArtist performs two analyses, one for each mode, and generates a report
file named for each of the modes: 'counting_off.rpt' and 'counting_on.rpt'. Another report
representing the entire simulation, which is named as defined by the 'CalculatePower' command.
To obtain the total power consumed during the two modes, you cannot add the power consumed
by each mode. Instead, you must:
3. Convert to power.
This is equivalent to computing a weighted sum (weighted by the amount of time spent in each
mode) of the two powers.
$mode "top.sys_request&&(!top.interrupt)"
$report request-not_interrupt.rpt
$mode "(!top.sys_request)&&top.interrupt"
$report not_request-interrupt.rpt
$mode "(!top.sys_request)&&(!top.interrupt)"
$report not_request-not_interrupt.rpt
In this example, the design has four modes. While processing the simulation data file, PowerArtist
monitors 'sys_request' and 'interrupt'. When either of these two signals changes state,
PowerArtist evaluates the various boolean expressions, determines which one is true and allocates
the energy to that mode bucket.
There are two edge cases for this method of modal power. If the simulator enters a mode in which
none of the mode signals are in a 'logic 1' state, the simulation activity for those simulation periods
is ignored (that is, the activity does not contribute to the power of any mode). If more than one mode
signals are in the 'logic 1' state at the same time, simulation determines that the system is in the
mode that appears first in the mode file (such as 'counting_off' in the mode file of Example 1 (p. 231)).
For more information on mode files and additional samples, see Mode File Format in the PowerArtist
Reference Manual.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
232 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding the Basics of the Detailed Power Report
Header
This section lists the power consumed by each leaf-level module in the design. The specific
content of this section depends, in part, on the options you specify to the 'CalculatePower
-average_report_options' command. For more information, see Controlling the Contents
of the Power Report (p. 234).
This section lists the power consumed by each individual IO pad in the design, along with the
capacitive load "seen" by that pad.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 233
Analyzing Simulation-Based Average Power
• The clock gating summary that provides statistics on the number of gated and ungated
registers and the number of integrated clock gating cells (ICGCs) 'instantiated' or 'inferred'
in your design.
To better understand the content of this report and to see a sample, see the 'Clock
Domain Power Consumption' section in the analysis tutorial.
This section lists each power supply used in the design with the power consumed from each
supply but it is generated when you specify the following command:
CalculatePower -average_report_options V
To create a report where the internal and pad power are divided into their static and dynamic
components, specify the following command:
CalculatePower -average_report_options s
Vertical Report
This section reports power by cell. You can generate/manipulate this section by specifying the
following options to the 'CalculatePower' command:
• -detailed_veritcal_report true
This section provides many different sample reports that are generated based on the values you specify:
• -average_report_options
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
234 of ANSYS, Inc. and its subsidiaries and affiliates.
Controlling the Contents of the Power Report
• -average_report_options ip
If you specify 'ip', the non-leaf hierarchical elements are reported using indenting to indicate levels
of hierarchy, rather than repeating all the non-leaf cell names:
Component Model Power(Watts)
--------- ----- ------------
wavtab user 5.62mW
cnt user 293uW
#0 adder_rip 67.3uW
#1 register 225uW
dff user 194uW
#0 register 194uW
div user 1.1mW
#0 adder_rip 246uW
#1 register 851uW
rom rom 4.03mW
Total internal power 5.62mW
• -average_report_options mp
• If you specify 'mp', the inferred elements with names containing '#' are not reported. This makes the
report smaller and contains only the instances you have actually created in your design:
Component Model Power(Watts)
--------- ----- ------------
wavtab user 5.62mW
wavtab.cnt user 293uW
wavtab.dff user 194uW
wavtab.div user 1.1mW
wavtab.rom rom 4.03mW
Total internal power 5.62mW
• -instance_power_threshold <float>
Another way to reduce the report size is to use this option, which eliminates any instance consuming
a small amount of power, from the report. You can set this to '1' percent
(-instance_power_threshold 1). For the sample output shown below, the threshold was set
to '10' percent (-instance_power_threshold 10):
Component Model Power(Watts)
--------- ----- ------------
wavtab.div.#1 register 851uW
wavtab.rom rom 4.03mW
Total internal power 5.62mW
Notes:
– In all the above examples, the total power reported is the same. The 'values' only change the
modules that are shown in the report. They do not change the power computation.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 235
Analyzing Simulation-Based Average Power
– These report samples (with just one Power(Watts) column) were generated using the 'f'
reporting value. This combines the static and dynamic power values into one.
• -average_report_options a
If you specify 'a', the area estimation section is included in the report.
6. Area
=======
• -average_report_options N
• If you specify 'N', an additional section is created. The section reports net transition time information:
6. Transition time of nets
==========================
Transition time(Sec.)
Net Rise Fall
--- ---- ----
top.Pclk 1.070e-10 1.070e-10
top.clk 1.070e-10 1.070e-10
...
top.core1.s1.#843 1.070e-10 1.070e-10
top.core1.s1.#491 1.070e-10 1.070e-10
• -average_report_options V
If you specify 'V', an additional section is created. The section reports power dissipation per power
supply and how the estimation of library voltages is determined:
2. Total power per supply
=========================
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
236 of ANSYS, Inc. and its subsidiaries and affiliates.
Controlling the Contents of the Power Report
• -average_report_options e
• -average_report_options P
If you specify 'P', an additional section is created. The section reports pin transition time information:
6. Transition time of pins
==========================
Transition time(Sec.)
Pin Rise Fall
--- ---- ----
top.sclk1.inpad.PAD 1.040e-10 1.040e-10
top.sclk1.inpad.C 1.040e-10 1.040e-10
top.core1.u1.#133.in[0] 1.070e-10 1.070e-10
top.core1.u1.#133.out[0] 1.070e-10 1.070e-10
• -average_report_options g
If you specify 'g', an additional section is created. The section reports net frequency and RTL glitch
information:
6. Net frequencies
==================
Possible net types include: Int (internal), Sync (synchronous), and PI (primary input).
• -average_report_options G
If you specify 'G', glitch power numbers are reported at the top level:
1. Total power consumption
==========================
Power(Watts)
Power contribution Static Dynamic Total
----- ------------ ------ ------- -----
Internal power
Internal register power 4.24uW 3.2mW 3.2mW
Internal latch power 0W 0W 0W
Internal memory power 3.97mW 16.3mW 20.3mW
Other internal power 4.04uW 61.7mW 65.7mW
Total internal power 3.98uW 19.6mW 23.6mW
IP Core power 0W 0W 0W
Pad power 44.2uW 103mW 103mW
Clock power 75.3nW 70.7umW 70.7uW
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 237
Analyzing Simulation-Based Average Power
Glitch power numbers are reported as an absolute value and as a percentage of total power. They
are printed separately after 'Total power'. Categories, such as register, clock, that constitute 'Total
power' do not include glitch power.
• -average_report_options t
If you specify 't', the combined static and dynamic instance power is reported. This is applicable to
all sections in the report file.
2. Internal power consumption
=============================
Component Model Power(Watts)
--------- ----- ------------
top.core1.a1.#241 decoder 1.93uW
top.core1.dpmem.m2.m2 DP512x32 1.43mW
• -average_report_options v
If you specify 'v', the gate name is replaced by the 'vendor_gate' in the report as shown in the
following sample:
2. Internal power consumption
=============================
Power(Watts)
Component Model Static Dynamic Total
--------- ----- ------ ------- -----
top.core1.a1.#241 decoder 1.93uW 0W 1.93uW
top.core1.p1.#1918 register 7.33uW 821uW 828uW
top.core1.r1.dpmem.m1.m1 vendor_gate 0W 47.9mW 47.9mW
...
If you specify both these options, the report includes entries for each model type:
Power dissipation by model/gate type:
=====================================
Cell
Component Model Count Power(Watts)
--------- ----- ---- -------------
top.core1 8 24mW
Register power 2 4mW
Latch power 0 0mW
Memory power 0 0mW
Other power 6 20mW
adder_pg 2 8mW
comparator 1 1mW
decoder 1 5mW
mux21 2 6mW
register 2 4mW
========================================================
top.core2 12 36mW
Register power ...
...
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
238 of ANSYS, Inc. and its subsidiaries and affiliates.
Controlling the Contents of the Power Report
Notes:
– Vertical reports do not include instances that are reported as part of clock tree power.
– The 'Cell Count' column reports the number of instances and not the number of bits. If there
is 'one' register instance in the design that is 64-bit wide, the cell count is '1' not '64'. If you
performed clock gating in your design, you can obtain the number of register bits from the
'Clock Gating Summary' as shown here:
Clock Gating Summary:
---------------------
Clock net: top.clk
Number of inferred clock gating cells: 10
Number of registers gated by inferred clock gating cells: 376
Number of registers enhanced gated by inferred clock gating cells: 0
Number of instantiated clock gating cells: 0
Number of registers gated by instantiated clock gating cells: 0
Total number of gated registers: 376
Total number of ungated registers: 77
• -average_report_options u
If you specify 'u', 'vendor_gates' are excluded from power and area reports. Using this option
reduces the size of the gate-level power report. If you do not use this option, every standard cell
instantiation in your design is reported, which can add up to millions of lines. Excerpts of the reports
with and without '-average_report_options u' are shown below (the power variations are in
red):
• -average_report_options c
If you specify 'c', the power associated with clock switched-cap for registers or latches is moved into
the clock report. Excerpts of the reports with and without '-average_report_options c' are
shown below (the power variations are in red):
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 239
Analyzing Simulation-Based Average Power
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
240 of ANSYS, Inc. and its subsidiaries and affiliates.
Controlling the Contents of the Power Report
• -average_report_options C
If you specify 'C', the clock switched-cap power for memories and IP blocks is included in the report.
• -average_report_options 0
• If you specify '0', an additional section is created. The section reports internal driver power (the power
required to toggle the net). Excerpts of the reports with and without '-average_report_options
0' are shown below (the power variations are in red):
Notes:
– The internal load power is not reported as internal power consumption.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 241
Analyzing Simulation-Based Average Power
• -average_report_options d
• If you specify 'd' and provide a power diff file, the new delta on parents in the power diff is reported
for each section:
5. Internal Power difference to abc.res
=======================================
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
242 of ANSYS, Inc. and its subsidiaries and affiliates.
Analyzing Average Power Using a SAIF File
• -average_report_options r
• If you specify 'r' provide a power diff file, the relative percentage delta on parents in the power diff
is reported for each section:
5. Internal Power difference to abc.res
=======================================
Despite these benefits, there are some drawbacks to using this format:
• You cannot analyze power over time. This is because specific signal transitions and the time
steps at which they occur are not captured, even though toggle counts are captured.
• Signal correlation is not possible, because only toggle counts are stored. Therefore,
state-dependent static power and dynamic power calculations require heuristics to determine
which conditions are matched in your technology library. This results in less accurate power
numbers when compared to a full arc power analysis. This is especially true for large macros like
compiled memories that have many pins and may have relatively complex power modeling.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 243
Analyzing Simulation-Based Average Power
• The basic format captures signal toggle information and duty cycles.
• The State-Dependent/Path-Dependent (SDPD) format captures information equivalent to the
PowerArtist arcs in the GAF file.
For most accurate power analysis, you should use the SDPD format. Support for the SDPD format
is in beta. This is especially true for a gate-level analysis. However, be aware that power arc
matching done while running the 'CalculatePower' command is done during your simulation
run. This simulation is therefore slower than if you generate the SAIF file in basic format.
PowerArtist supports both the formats and automatically detects when the given SAIF file uses the
SDPD format and performs arc-based estimation. For basic SAIF files, PowerArtist automatically performs
pin-based analysis for RTL designs (and most gate-level designs).
To use a SAIF file, specify the following option in addition to all the other options:
CalculatePower -analysis_type average -saif_file design.saif <options>
PowerArtist reads multiple time-sliced SAIF files and generate an RTL power waveform, with each data
point representing a SAIF file. This output can be directly read in Ansys RedHawk-SC Electrothermal for
early thermal analysis using RTL power as an input, thereby enabling early design decisions such as
thermal sensor placement.
To use time-sliced SAIF file, specify the index of the first time-slice and last time-sliced index using the
following variables:
pa_set saif_file <first time-slice>
Note: The SAIF format is supported in average power analysis (CalculatePower -analysis_type
average) only.
where:
• 'T1' = the total time in which the signal remains in the '1' state
• 'T0' = the total time in which the signal remains in the '0' state.
Any 'X' or 'Z' values generated during simulation are translated into duty cycle information. The equations
used in the SAIF flow are:
duty_cycle = (T1 + (TX / 2) + (TZ / 2)) / (T1 + T0 + TX + TZ)
TCnew = TCSAIF + IG
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
244 of ANSYS, Inc. and its subsidiaries and affiliates.
Name Mapping Flow
• 'T1', 'T0', 'TX', and 'TZ' are fields from a line in the SAIF file.
• 'TX' and 'TZ' represent the total time in which the signal remains in the 'X' or 'Z' state, respectively.
• 'TCnew' represents the new calculated toggle count.
• 'TCSAIF ' represents the original toggle count in the SAIF file.
• 'IG' represents the internal glitches.
Note: The higher the number of nets 'missing' from the stimulus file, the less accurate the power analysis
results are. PowerArtist's activity analysis allows you to trade-off the simulation time and stimulus file
size with the accuracy of the power analysis.
In the first and third flows, nothing special is required. If you are implementing the Palladium flow, the
'CalculatePower' command checks to ensure that the nets tagged as selected in the scenario file are
present in your stimulus file. If the nets are not present, a warning message is reported. See Acquiring
Simulation Data in Palladium Flows (p. 213), for more details. The second flow is described in the next
section.
During gate-level synthesis, the RTL design hierarchy is often flattened and the RTL nets that are inferred
as registers are transformed into gate-level instances. Therefore, you must map as many RTL net names
as possible, into gate-level equivalent names. The activity of every successfully mapped gate-level net
is determined by the 'CalculatePower' command using its RTL toggles. This toggle information is then
written out to the GAF file. RTL nets in the design are mapped automatically assuming that you have
not changed either your RTL design hierarchy or your RTL modules between simulating the design and
starting the power analysis run. The activity of the missing nets is calculated during average power
analysis as in flows 1 and 3.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 245
Analyzing Simulation-Based Average Power
Currently, PowerArtist does the gate-level mapping automatically using a mapping file generated by
Conformal ™ from Cadence. Consider the example scenario where the original design that you simulated
is an RTL design and you need to perform power analysis on a fully synthesized gate-level design. To
enable this, do the following steps:
Running Conformal in the 'compare' mode instead of the 'full equivalency check'
mode has two notable benefits:
• You can perform the mapping on your full-chip design. There is no need for a hierarchical
equivalence checking methodology so the mapping step is much simpler to perform.
• The performance in the 'compare' is significantly better. In the 'full equivalency
check' mode, one of the first steps is a compare operation that does the name mapping.
Verifying the actual equivalence between your RTL and gate-level netlists is what takes
the most time.
The following sample 'do' script shows how a compare run is performed:
vpxmode
// preserve original RTL register names
set naming rule "%s_reg" -register -golden
// preserve hierarchical block names in RTL signal naming
set naming rule %s %L[%d].%s %s -instance
set system mode lec
remodel -seq_constant -repeat
add compare point -all
// compare
usage
report unmapped point > DESIGN.lec.unmapped
report compare data -class abort > DESIGN.lec.abort
report compare data -class noneq > DESIGN.lec.noneq
report mapped points > mapfile.dat
diag -sum
diag -all > DESIGN.lec.diag
exit -f
4. Create the gate-level scenario file and specify the 'SetNameMapFile' command. The syntax of
this command is:
SetNameMapFile -map_file <conformal_do_filename> -format conformal
Use the output of the 'do' script created in step #3 as the '<conformal_do_filename>'.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
246 of ANSYS, Inc. and its subsidiaries and affiliates.
Parallel Activity Processing
5. Run the 'CalculatePower' command in its name mapping mode to generate a GAF file and
perform average power analysis by using '-use_rtl_sim_data true'. This option indicates
that the GAF file is generated by a name-mapped run.
Notes:
• To force name mapping to occur, you must specify the '-use_rtl_sim_data true'
option.
• The '-use_rtl_sim_data true' option, in turn, sets the following options to 'true':
– -mixed_sim_prob_estimation
If you do not specify this option, missing nets are flagged as errors.
– -pin_based_estimation
This option indicates that many nets are missing from the design, so a complete
arc-based power analysis is not possible.
Advanced Flows
Currently, PowerArtist supports name mapping files created by Conformal. If you have Formality ™ or
can create your own name mapping files, contact your Application Engineer who can answer questions
about how to handle such flows.
To enable this flow, use the following command and specify the number of parallel processes to run:
ConfigureParallelAnalysis -processes <>
Refer to the PowerArtist Reference Manual for complete details of the 'ConfigureParallelAnalysis'
command.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 247
Analyzing Simulation-Based Average Power
You can enable this feature by setting the following variables to 'true' during average power analysis:
# Enable glitch propagation
pa_set disable_glitch_propagation <true | false>
Refer to the PowerArtist Reference Manual for complete details of all the variables.
• The 'Glitch Pwr' and '%Glitch Pwr' columns report potential glitch power and % of total glitch
power, respectively, for large hierarchical blocks. Sorting the power table on these columns can
help you to identify blocks with high potential glitching:
Note: The estimated RTL glitch power is intended to identify glitch-prone design elements and
not for absolute accuracy given that parasitics, timing, and detailed implementation data is not
available at RTL design stage.
• The 'Glitch Factor' and ' Glitch Depth Factor ' provide an estimate of the glitch activity on a net.
Use these metrics to identify glitch-prone logic early at RTL:
– Glitch Factor
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
248 of ANSYS, Inc. and its subsidiaries and affiliates.
RTL Glitch Power Analysis
Glitch Factor is an indication of how much glitch toggling might occur at a net.
– Glitch Depth Factor
The amount of glitching that occurs at the output of a gate is related to the difference
in the depth factor of nets connected to the inputs of the gate.
These metrics are also available as PDB properties, which can be accessed through the
'get_property' container command:
get_property <net | instance> glitch_factor
get_property <net | instance> depth_factor
get_property <instance> glitch_power
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 249
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
250 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 13: Analyzing Vectorless Average Power
13.1. Flow Overview
Vectorless power analysis is a convenient way to quickly generate 'what-if' scenarios that give you a
good idea of what your power may be in various situations. Accurate power numbers come from
simulation-based analysis.
Use PowerArtist to run vectorless power analysis by using the following flow:
2. Create a Vectorless Activity File (VAF) that contains the activity information.
Chapter Organization
The following topics are covered in this chapter:
You can use wild cards for net names and port names in the commands used in the VAF. It may be
easiest to create an OADB script that automatically generates the commands. You can start with the
sample scripts available in the following directory:
$POWERARTIST_ROOT/examples/OpenAccess
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 251
Analyzing Vectorless Average Power
You must specify the frequency or activity and duty cycle information for every clock net in the
design, as shown in the example below:
SetStimulus -net top.clock -frequency 1e+08 -duty 0.6
This example sets the 'frequency' of the net 'top.clock' to '100 MHz' and the 'duty
cycle' to '0.6'. The default value of '-duty' is '0.5'.
If you performed clock gating using integrated clock gating cells, you should also set the gated
clock output frequency.
You must specify the frequency or activity for all of the primary inputs of the design. If a net is
connected to a module, you can set the frequency by specifying the hierarchical path to the net,
as shown in the example below:
SetStimulus -net {top.we} -frequency 1e+6 -duty .8
This example sets 'frequency' of net 'top.we' to '1 MHz' and 'duty cycle' to '.8'.
You may want to set the same frequency for all your primary inputs and doing so may be fine,
depending on the goals you are trying to achieve. However, you should give this careful
consideration as setting all the primary inputs to one value impacts accuracy.
If critical signals are tied to a particular value that you want to maintain as constant, then the
constant values can be controlled by specifying duty cycles of '0' (constant 0) or '1' (constant
1).
SetStimulus -net {top.alu.globalEn} -duty 1
This example sets the 'duty cycle' of 'top.alu.globalEn' to a constant '1'. Using the
'SetStimulus' command in this way accomplishes what case analysis does for static timing
analysis.
• Setting the Activity and Duty Cycle for Buses Driven by Tri-Stated Signals
If a signal has multiple drivers that are tri-states, you should set the desired activity and duty
cycle for the bus that represents the combination of all the tri-stated signals.
Use the 'SetStimulus' command to set the frequency and duty cycle on all the input and output
nets of a specified leaf-level instance, as shown in the example below:
SetStimulus -instance inst.m1 –port * –frequency f –duty d
Use the '-signal_type' option to set the frequency (and duty cycle) on ports of a specific
type: 'input', 'output', or 'both'.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
252 of ANSYS, Inc. and its subsidiaries and affiliates.
What-if Power Analysis with User-specified Signal Activity
This example sets the 'frequency' of all 'input' ports that start with 'b' to '100 MHz'.
You must specify the port frequencies for critical ports on your memories. Setting the port
frequencies is critical because memories account for a significant portion of the power of your
chip. You must set the output port frequencies because the 'CalculatePower' command cannot
propagate activities and duty cycles through memories and instances in the downstream cone
of logic from a memory need these values to compute their power correctly.
SetStimulus -instance rxchan.dpmem.m0
-port *
-instance_type memory
-frequency 2.76e+7
This example sets the average 'frequency' of all ports of the memory instance
'rxchan.dpmem.m0.m1' to '27.6 MHz'.
During power analysis, PowerArtist cannot propagate activity or duty cycles on any instances
that are black-boxed during elaboration (Elaborate). Therefore, you must specify the activity,
frequency, and duty cycle for every output port of the instance as shown in the example below:
SetStimulus top.myblackbox
-port *
-signal_type output
-frequency 1e+5
-duty .7
This example sets 'frequency' of all output ports in the black-boxed instance
'top.myblackbox' to '.1 MHz' and 'duty cycle' to '.7'.
Use the '-override <true | false>' option of the 'SetStimulus' command to do this quick
what-if analysis. The default value of this option is 'false'.
PowerArtist supports both vectorless (VAF) and simulation data together as input. Simulation data is
given higher priority. If there is a common net in the VAF and simulation data, then the activity/duty
given in the simulation data is set on the net. However, the net with '-override true' has a higher
priority than the activity from the simulation source.
Limitation: This is not enabled in the ' mode' and 'multiple-gaf' based flows.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 253
Analyzing Vectorless Average Power
You can also use the 'Net Activity' dialog in the GUI to do quick what-if power analysis. After adding
nets and changing activity/duty you can perform a what-if power analysis by exporting the data in the
format supported by the 'SetStimulus' command. You can then process this file during power analysis
by using one the following variable:
pa_set activity_override_file <filename>
Note: When you use this method, the commands in the file specified by the
'-activity_override_file <filename>' option take higher priority vis-a-vis other activity
sources such as simulation or VAF.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
254 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 14: Analyzing Time-Based Power
14.1. Introduction
PowerArtist allows you to obtain power and current waveforms as a function of time for RTL, gate-level,or
mixed RTL and gate designs. Before you run time-based power analysis, you must read Preparing for
Power Analysis (p. 167), which describes the prerequisite steps you need to perform before you begin
any power analysis.
Chapter Organization
The following topics are covered in this chapter:
1. Simulate your design and generate simulation data in the FSDB, IAF, or VCD formats.
2. Build a scenario file using the 'Elaborate' command. For details, see Getting Your Design into
PowerArtist (p. 133).
3. Run vector analysis using the 'GenerateActivityWaveforms' command. For details, see Analyzing
Simulation Activity (p. 201).
4. Run the 'CalculatePower -analysis_type time_based' command. Details for this process
are documented in this chapter.
5. View the reports created by the 'CalculatePower' command in the following ways:
• Text format
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 255
Analyzing Time-Based Power
• The 'CalculatePower -analysis_type time_based' command with other options required for
a time-based analysis. For complete syntax, see "Syntax for Time-Based Power Analysis".
• A scenario file representing the design generated by the 'Elaborate' command. For details, see Getting
Your Design into PowerArtist (p. 133).
• Libraries in Liberty format.
• Simulation traces stored in either FSDB, IAF, or VCD formats.
• Power-aware Tcl commands, such as 'SetClockGatingStyle' and 'SetClockNet' to control your power
analysis. These commands and their functions are described in this chapter.
• Y can also use the 'MonitorInstances' and 'MonitorToggleInstances' commands to monitor various
design elements. This chapter describes how to use these commands in your time-based power
analysis.
• -activity_file <your_simulation_file>
Use this option to specify an input stimulus file generated by a functional simulator run. The file
may be in FSDB, VCD, or IAF (generated by Ansys PLI routines) format. You must specify either
'-activity_file' or '-vectorless_input_file' for an average power analysis.
CalculatePower automatically determines the type of the simulation activity file.
• -scenario_file <your_scenario_file>
Use this option to specify the scenario file you generated using the 'Elaborate' command. For more
information, see Getting Your Design into PowerArtist (p. 133).
Use this option to add the specified file or Tcl list of files to the list of Liberty technology files.
• -top_instance <top_simulation_instance>
Use this option to specify the full hierarchical name of the top-level module in the simulation
hierarchy.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
256 of ANSYS, Inc. and its subsidiaries and affiliates.
Controlling Your Time-based Power Analysis
• Although not required, you may also want to use the '-start_time' and '-finish_time'
options. For details see, Setting Timing Windows for Time-based Power Analysis (p. 258).
• -gate_level_netlist true
• -interval_size <time_in_seconds>
Use this option to specify the minimum time interval in seconds for which power is reported. Power
calculation by the time-based analyzer depends on this value.
If you specify an interval of size 'T >= 1 ns', the time-based analyzer:
1. Breaks up the time-steps in your activity file into buckets of width 'T'.
2. Calculates the total dynamic energy for every arc that matches during all time steps
processed for that interval.
4. Adds the static power. This is the total power that is reported for the interval.
If you do not specify an interval, then PowerArtist performs an instantaneous analysis. For each
time step in the activity file, PowerArtist:
1. Calculates the total dynamic energy for every arc that matches during that time step.
3. Adds the static power. This is the total power that is reported for that time step.
Note: If you specify an interval of size 'T < 1 ns', PowerArtist generates a warning and performs
an instantaneous power analysis.
Use this option to specify the reference clock that controls when a clock starts and the length of
its period.
Use this option to specify the edge of the clock that defines the start point for the first interval.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 257
Analyzing Time-Based Power
– positive: starts the clock when the first clock transition goes to 1.
– negative: starts the clock when the first clock transition goes to 0.
– auto: starts clock when the first clock transition goes to either 0 or 1.
Default: auto
• -num_clock_cycles <integer>
Use this option to set the interval size as the number of clock cycles. The interval size is the period
of the block into which PowerArtist splits the simulation. You should choose an interval greater
than 1% of the total simulation time.
Default: 0
For additional options, see the 'CalculatePower' entry in the PowerArtist Reference Manual.
• the '-start_time' and '-finish_time' options are set to be the leading edge of a clock
and the trailing edge of a clock, respectively.
In general, the 'interval size' should be a multiple of the clock period. The number of clock
periods impacts the performance and granularity of your analysis. Smaller intervals take longer
but give you more data.
The resulting waveforms look more realistic when you do not use arbitrary values for
'-start_time', '-finish_time', and '-interval_size'.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
258 of ANSYS, Inc. and its subsidiaries and affiliates.
Running the Analysis
You can also run this command from the 'pa_shell' prompt.
The following three examples assume that you are running with '-gate_level_netlist true'
and that the 'top_instance', scenario file, and Liberty files are specified:
• Example 1
CalculatePower -analysis_type time_based -interval_size 1e-9
This command performs time-based analysis breaking your simulation time into '1 ns' buckets.
The command generates a report 'design.rpt' and a power waveform file
'CalculatePower.ptcl'. The 'design.rpt' contains a simple report for the top-level
instance in the design.
• Example 2
CalculatePower -analysis_type time_based -interval_size 1e-9 \
-fsdb_output_file design.fsdb -ptcl_output_file design.ptcl -output_current true
This command performs the same time-base analysis as 'Example 1', but generates current
over time waveforms that are stored in 'design.fsdb' (FSDB format) and 'design.ptcl'
(PTCL format).
• Example 3
MonitorInstances -name top.core1
CalculatePower -analysis_type time_based -interval_size 1e-9 \
-fsdb_output_file design.fsdb -ptcl_output_file design.ptcl -output_current true
These two commands perform a similar time-based analysis as 'Example 2', but the report
and the waveform files include only the hierarchical instance 'top.core1'.
Note: The values of all the child instances are included in the information generated for
'top.core1'. This is controlled by the 'MonitorInstances' command. For additional control,
use the 'MonitorFast' and 'MonitorArcs' commands.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 259
Analyzing Time-Based Power
-top_instance txrx_tst.top1 \
-use_non_scan_flops false \
-wireload_library hvt
This is an example of how to perform a time-based analysis on an RTL design. In this case, you do
not specify the '-gate_level_netlist true' option.
This enhancement enables analysis of cycle-based power for designs running at GHz+ frequencies.
Notes:
• The runtime for time-based power analysis is a function of the number of intervals. Setting
'-interval_size' to a very small value for a long analysis duration can lead to an increased
runtime due to a large number of intervals.
• The variable is applicable for power analysis of gate-level designs only.
• A log file whose name you can set by using the 'CalculatePower -log' option.
• Waveforms in the FSDB format or PowerArtist Tcl-based format that holds the current and power
over time information you requested. Waveforms are not stored in the report file.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
260 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding and Reviewing Outputs and Results of the Time-based Analysis
For details of this section, see Clock Power Consumption (p. 55).
If your design required that buffer trees be generated for high fanout nets, then this section
describes the affected nets and how the buffer tree was created.
For a sample time-based power report, run the analysis tutorial and generate a time-based analysis
report.
If you specified the FSDB format (by specifying the 'CalculatePower -fsdb_output_file
<filename>' command), you can load and display the waveforms in PowerArtist by using the Ansys
Waveform Viewer available in the PowerCanvas (select 'Tools > Waveform Viewer'). A sample
waveform is shown below:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 261
Analyzing Time-Based Power
1. Place your cursor over an area on the waveform and press the 'r' key to start the ruler.
2. Drag the ruler to any data point on the waveform and mark it using the 'm' key.
A colored box (same color as the waveform) appears at the marked data point. This box
includes the coordinates of the data point and the 'delta x (dx)' and 'delta y (dy)'
values from the first data point to second data point. The formulas are:
dx = 'X of the end point' - 'X of the start point'
dy = 'Y of the end point' - 'Y of the start point'
3. You can continue measuring the distance to additional data points, or if you are done, press
the 'r' key again to disable the active ruler. Marked ruler(s) stay on the plot.
The following figure shows one measurement from a single data point:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
262 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding and Reviewing Outputs and Results of the Time-based Analysis
This feature is useful for presenting data in a presentation or in printed form. If you want to present
waveform data in printed form, you should change the background color to white (to save ink when
printing) by selecting 'Options > Toggle background color'.
For more information on using the Waveform Viewer, see Using the Waveform Viewer (p. 429).
Note: If the value of '-interval_size' is less than '1ns' for a gate-level design, PowerArtist performs
an instantaneous power computation. The following figure a sample waveform:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 263
Analyzing Time-Based Power
'memory' (via the '-group' options) and user-specified instance names (via the '-name' option). The
following enhancements are added in this flow:
Use Model
You can enable this flow by performing the following steps:
This generates a combined single power waveform and adds an entry to the time-based
power analysis text report for the group.
The following enhancements in 'DefineGroup' and 'MonitorInstances' commands enable this support:
– You can create groups using cell names, by using the '-module' option. An example is
shown below:
DefineGroup myGrp { top.core1 } -module { DP256x32 }
In this example, the 'DefineGroup' command creates a group of all the instances whose
cell type matches 'DP256x32' within the hierarchy 'top.core1'.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
264 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding and Reviewing Outputs and Results of the Time-based Analysis
Example
DefineGroup myGrp1 -instance {top.core1.t1 top.core1.r1}
MonitorInstances -group {memory register myGrp1}
Outputs
The 'DefineGroup' and 'MonitorInstances' commands are specified as inputs in a tcl file. The power
waveform saved in an FSDB or PTCL file and a text report to enable any post-processing are the
outputs in this flow.
• A new sub-section is generated in the 'Power contribution' section of the time-based power
analysis text report. It contains information about the custom/user-defined group(s). A sample
report is shown below:
1. Power contribution
=====================
CATEGORY POWER SUMMARY
Average Power(Watts) Maximum At Time
Category Static Dynamic Total Power(Watts) (s)
-------- ----- ------- ----- ------------ ---
Register 4.1363uW 3.2191mW 3.2232mW 3.955mW 10.62us
Latch 0W 0W 0W 0W 0s
Memory 3.9747mW 16.317mW 20.292mW 21.111mW 9.1036us
Other 4.8438uW 90.282uW 95.125uW 140.8uW 8.194us
IO 43.734uW 102.66mW 102.7mW 129.57mW 10.62us
11.529us
Clock 7.6726nW 21.064uW 21.071uW 22.012uW 10.013us
10.316us, 10.62us, 10.923us, 11.226us, 11.529us, 11.832us, 12.136us
InferredBuffer 668.08nW 0W 668.08nW 668.08nW 6.3748us
6.678us, 6.9812us, 7.2844us, 7.5876us, 7.8908us, 8.194us, 8.4972us, 8.8004us, 9.1036us
...
----- ------- --------
Total Average 4.0281mW 122.3mW 126.33mW
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 265
Analyzing Time-Based Power
• Use the peak power and current information during the physical design process to size your
power busses. By selecting various hierarchical instances in your design that correspond to
physical blocks, you can get a good idea of the power grid needs on a block-by-block basis.
• Use the total peak power and current values to estimate the power supply needs of your chip.
• Examine areas of the waveform that have large swings in power or current from one time step
to the next, to get an idea of any di/dt issues.
The FCA flow works at the RT level of abstraction only for feedback MUX topologies and for instantiated
clock gates. The reports are in the form of:
• '.ptcl' graphs
The graphs report flop clock activity and average flop clock activity as a function of time.
• Text file
The text file includes minimum, maximum, and average counts of flops whose clocks toggled
during an interval expressed as a number and a percentage. It also includes the total flop count
per hierarchical instance per clock domain.
When this command is specified, PowerArtist calculates flop clock activity for your design and
generates the report and graphs mentioned above. If you are interested in only flop clock activity
information, it is better to use the 'CalculateFlopClockActivity' command.
When this command is specified, PowerArtist calculates flop clock activity for your design,
performs time-based power analysis, and generates the report and graphs mentioned above.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
266 of ANSYS, Inc. and its subsidiaries and affiliates.
Monitoring Flop Clock Activity
You must specify the following options while using this method:
-num_clock_cycles <integer>
-reference_clock <clock_name>
-clock_file <filename>
The interval size is the same across all clocks and determined by the values of the
'-reference_clock' and '-num_clock_cycles' options.
The sample waveforms and text file in the next sections are generated by using the analysis
tutorial with the following 'CalculatePower' options:
-num_clock_cycles 1
-reference_clock top.clk
-clock_file txrx.clk
-flop_clock_activity fca
Use the 'MonitorToggleInstances' command to specify a list of hierarchical instances that to monitor
in the FCA flow. An example usage is shown below:
MonitorToggleInstances
-instances {top top.core1 top.core1.u1 top.core1.t1 top.core1.r1}
This example tells PowerArtist to monitor the five specified instances and generate results for each
hierarchical instance you specified per clock domain as a waveform in either the 'PTCL' or 'FSDB' file
you specify.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 267
Analyzing Time-Based Power
Looking at the average flop clock activity in the top graph, you can see that the transmit clock domain
(t1_top.clk) in brown is active when the receive clock domain (r1_top.clk) in green is inactive and
vice-versa. You can also see that the pci clock domain (top.pci_clk) is always on, indicating that this
could be a good candidate for clock gating. To determine whether it's worth your time to clock gate
the pci clock, you would need to check the absolute waveforms (displayed on the bottom half of this
figure). Looking at them here, you can see that there are approximately 20 flops being clocked in the
receive block (ut0|top.core1.r1_top.pci_clk) and even more in the transmit block
(ut0|top.core1.t1_top.pci_clk). Therefore, this could indicate a power bug. To see the exact values,
you can either hover your mouse on the waveforms or read the text report (as shown on the next
page).
Instance: top
Clock: top.clk There are 453 flops defined in hierarchical instance “top” and its
Number of Flops : 453 children that are driven by top.clock. top and its children.
Flop Clock Activity: There existed one or more intervals where:
Minimum : 206 (45.4%) the minimum # of registers whose clock toggled was 206; the maximum
Maximum : 249 (55%) was 249;
Average : 230 (50.8%)
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
268 of ANSYS, Inc. and its subsidiaries and affiliates.
Monitoring Signals
Instance: top.core1.r1
Clock: top.clk
Number of Flops : 77
Flop Clock Activity:
Minimum : 1 (1.3%)
Maximum : 13 (16.9%)
Average : 5.98 (7.77%)
Average Flop Clock Activity:
Minimum : 0.013 (1.3%)
Maximum : 0.169 (16.9%)
Average : 0.0777 (7.77%)
Clock: top.pci_clk
Number of Flops : 19
Flop Clock Activity:
Minimum : 19 (100%)
Maximum : 19 (100%)
Average : 19 (100%)
Average Flop Clock Activity:
Minimum : 1 (100%)
Maximum : 1 (100%)
Average : 1 (100%)
<snip>
Instance: top.core1.t1
Clock: top.clk
Number of Flops : 77
Flop Clock Activity:
Minimum : 1 (1.3%)
Maximum : 13 (16.9%)
Average : 7.12 (9.25%)
Average Flop Clock Activity:
Minimum : 0.013 (1.3%)
Maximum : 0.169 (16.9%)
Average : 0.0925 (9.25%)
Clock: top.pci_clk
Number of Flops : 87
Flop Clock Activity:
Minimum : 87 (100%)
Maximum : 87 (100%)
Average : 87 (100%)
Average Flop Clock Activity:
Minimum : 1 (100%)
Maximum : 1 (100%)
Average : 1 (100%)
<snip>
Inputs
The '-signal' option takes a register output net as input and monitors it.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 269
Analyzing Time-Based Power
Outputs
The '-signal' option has the following outputs:
The power of the driver instance of the register output net is reported in section '1. Power
contribution' in the sub-section titled 'INSTANCE POWER SUMMARY', which also includes a new
column titled 'Signal Name'. A sample report is shown below:
1. Power contribution
=====================
CATEGORY POWER SUMMARY
<snip>
Notes:
– A column is added to the sub-section only if the '-signal' option is specified. A '-' is
added for an empty entry in the 'Signal Name' column as a placeholder.
– The text in red represents the other time stamps when maximum power is achieved by
instance 'top.u1.#r4'.
• Waveforms corresponding to the specified signals are also generated for the driver instance in
the generated FSDB file.
To resolve this runtime issue, time-based power analysis is enhanced to use multi-threading so that
time-consuming tasks are done concurrently giving it a significant performance boost. To enable
multi-threading, set the following variable to 'true':
pa_set threads <true | false>
You can view the number of threads run during time-based power analysis in the following output files:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
270 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Normalization
<snip>
Note TBE-187: Number of threads being used = 2
<snip>
• As the thread count in the header of the time-based analysis text report as shown below:
<snip>
Number of threads used = <integer>
<snip>
You can also control the number of threads used by PowerArtist in an LSF setup or any other load
sharing system. Use the following variable to specify an upper limit for the number of threads and
ensure compliance to your organization's LSF policy:
pa_set num_threads <integer>
Value Description
0 This is the default value, which means that no limit is set. The following message is issued
in this case:
Note TBE-187: Number of threads being used = <integer>
1 Only a single thread is allowed, which means that multi-threading is disabled and the
following variable is set:
pa_set threads false
<> Any integer value. The following message is issued in this case:
Note TBE-190: Maximum number of threads specified =
<integer>
Note: If you specify a value that is higher than the maximum number of threads supported
by the system, PowerArtist ignores the specified value, sets the value to the maximum
number of threads allowed by the system, and emits the following message:
Note TBE-187: Number of threads being used = <integer>
Power normalization analyzes the gap between the propagated activity values and simulation activity
values at a net or pin, and scales the power of logic upstream. This helps to mitigate the effects of
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 271
Analyzing Time-Based Power
activity propagation error, thereby, improving RTL power accuracy. You can enable this flow by setting
the following variable to 'true':
pa_set enable_power_normalization <true | false>
The default value of the variable is 'false'. When this is set to 'true', PowerArtist normalizes the
dynamic power of the instances between two simulated nets. For each simulated net, a normalization
factor is computed using the formula defined below:
Normalization factor = simulated activity / propagated activity
The power of the instances in the fanin cone of the simulated net is scaled with the normalization
factor, leading to improved power accuracy.
Power normalization also includes scaling buffer dynamic power according to the Normalization factor
(greater or less than 1) computed for the driving net of the buffer. Dynamic power of instances in the
fanin cone of the clock pin of sequential elements is not normalized based on the simulated activity of
output of sequential elements. Dynamic power of instances in the fanin cone of the data input pin of
sequential elements can be normalized if the simulated activity at the output of sequential element is
more than the tool calculated activity. This may correctly lead to a change in dynamic power of the
sequential element.
The resulting normalized instance power is accessible from the GUI and Tcl interface. The normalized
power (on instances and nets) and normalized activity (on nets) is also annotated in the power database
(PDB). This enables you to match total dynamic power of instances with the dynamic power reported
in power analysis text report, view the normalized frequency and activity value for nets in the GUI, and
use container commands to obtain normalized activity and power from the PDB.
Time-based power analysis is enabled for distributed processing for a significant improvement in runtime.
In this flow, multiple processes are run in parallel to perform power-over-time analysis. The input activity
data is distributed among multiple processes and the result is combined at the end to provide the
complete power over time profile. You can use the 'ConfigureParallelAnalysis -processes <>'
command to enable this flow and use '-script <>' to specify an executable script that enables you
to submit jobs to multiple machines in your environment.
Command
The 'ConfigureParallelAnalysis' command defines the options for distributed processing. Refer to the
' PowerArtist Reference Manual' for complete details of the command.
The Script
The script file that you specify must fulfill the following criteria:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
272 of ANSYS, Inc. and its subsidiaries and affiliates.
Distributed Processing in Time-based Power Analysis
• It must accept the PowerArtist commands as-is, and message quotes, as needed.
• It must submit the job to the appropriate server (or multiple machines), with the appropriate
environment configuration.
• It must echo the commands' output to stdout.
Notes:
• If you do not specify a script, the parallel processes are executed on the local machine.
• If you do not run the 'ConfigureParallelAnalysis' command, time-based power analysis defaults
to a single process.
Outputs
There are four outputs in this flow:
• FSDB file
A single FSDB file with a consolidated power waveform is generated after parallel analysis. You
can specify the name of the file by using the following variable:
pa_set fsdb_output_file <filename>
• PTcl files
Multiple PTcl files (one for each process) representing power waveforms are generated after
parallel analysis. Compared to FSDB, '.ptcl' files are textual and are generated incrementally
so you can open them in the 'Waveform Viewer' for each segment, after time-based analysis is
complete. The '.ptcl' files are generated only if the following variable is specified:
pa_set ptcl_output_file <filename>
– Example 1:
pa_set ptcl_output_file foo.ptcl
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 273
Analyzing Time-Based Power
The file is renamed and the following multiple files are generated:
foo_start1_finish1.ptcl
foo_start2_finish2.ptcl
– Example 2:
pa_set ptcl_output_file foo.myExtension
The file is renamed and the following multiple files are generated:
foo.myExtension_start1_finish1.ptcl
foo.myExtension_start2_finish2.ptcl
• Log file
A single log file is generated after parallel analysis. You can specify the name of the file by using
the following variable:
pa_set calculate_log <filename>
– Manual
Each process or run of the parallel time-based flow generates a report ('.rpt') file. You
can combine the multiple reports into a single report ('.rpt'). The start/finish header for
the report file from each process is printed in the combined report noting the start/end
time slice for that report. A sample header is shown below:
(Report from -start_time 2400 to -finish_time 11000)
– Automatic
A single consolidated power report for all the slices processed in parallel is generated
automatically. A sample of the merged report is shown below:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
274 of ANSYS, Inc. and its subsidiaries and affiliates.
Distributed Processing in Time-based Power Analysis
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 275
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
276 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 15: Examining and Implementing Power
Reduction Opportunities
15.1. Introduction
You can use PowerArtist to determine your power bottlenecks. After changing your design to significantly
reduce power, you can use PowerArtist and tools later in the design flow to further reduce your chip's
power. The tree display in PowerArtist's PowerCanvas user interface allows you to quickly see where
the power in your design is going.
PowerArtist contains power reduction modules called 'PowerBots'. These PowerBots scan your design
looking for a specific design feature, such as an enable signal that can be constructed to turn off
unobserved register toggles. A PowerBot performs an analysis of the topology of your design and
activities on nets and then makes recommendations on potential changes you should make to your
design. It reports either power savings numbers or power wastage numbers to help you make your
decision. If it can determine an example change to make, it provides code snippets too. Each of the
available PowerBots are discussed in detail in this chapter.
For a hands-on example of running power reduction, you should read the PowerArtist Tutorial Part II:
Power Reduction (p. 71) chapter.
Chapter Organization
The following topics are covered in this chapter:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 277
Examining and Implementing Power Reduction Opportunities
The following table lists the PowerBots that are described in this chapter. There are two types of
PowerBots:
PowerBot Acronym
Power Reduction PowerBots (p. 279)
Low-Activity Non-Enabled Register (LNR) (p. 279) lnr
Low-activity Enabled Registers (LER) (p. 281) ler
Datapath Operator Isolation (DOI) (p. 282) doi
Local Explicit Clock Enable (LEC) (p. 283) lec
Split Memory Words (SMW) (p. 287) smw
Gate Memory Clock (GMC) (p. 293) gmc
Prism (p. 298) prism
Observability Don't Care (ODC) (p. 304) odc
Strengthened Observability Don't Care (SODC) (p. 315) sodc
Enhanced ODC-based Clock Enable Identification (p. 319) odc
Enable Signal-based Stability Constraints (STC) (p. 322) stc
Power Linter PowerBots (p. 325)
Memory Power (MEM) Linter (p. 326) mem
MUX Power (MUX) Linter (p. 327) mux
Register Power (REG) Linter (p. 334) reg
Clock Enable Condition (CEC) Linter (p. 336) cec
Memory Sleep Mode (MSM) Linter (p. 337) msm
Macro Power Linter (MPL) (p. 338) mpl
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
278 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
The Low-Activity Non-Enabled Register (LNR) PowerBot finds registered buses in the design that
change infrequently and are not enabled, and estimates the savings gained if a clock enable is
generated by detecting changes on the bus.
Definition
The following schematic and timing diagram shows a register where the data input is active during
one phase of operation only, and does not change for a long period of time:
15.3.1.1. Usage
This PowerBot is enabled by default. To disable it, specify the following command:
ReducePower -skip_reduction_list lnr
15.3.1.2. Implementation
In this circuit, power is wasted by the clock driver as well as by circuitry inside the register because
most of the clock toggles are not needed. That is, driving the clock to this register when the data
is not changing does not change the circuit behavior.
One way to construct an enable signal is by detecting actual changes on the bus. In the following
circuit, an XOR is used to determine whether the next state of each bit is the same as the previous,
and then a single N-bit OR is used to determine if any bits changed. If no bits on the bus are about
to change state, then there is no reason to enable the clock. The clock gate at the top of the
schematic safely disables the clock without allowing any glitches on the detector output to reach
the register clock:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 279
Examining and Implementing Power Reduction Opportunities
For example, if the original code for which LNR is flagged is as follows:
always @(posedge clk)
q <= d;
You can generate an enable 'en' by modifying the code as shown below:
en = | (q ^ d);
always @(posedge clk)
if (en)
q <= d;
15.3.1.3. Trade-offs
A large area can be impacted by adding XORs and ORs for a wide bus. The levels of logic between
the data and the enable can also impact timing. If a change arrives late at the data inputs, it requires
some time to propagate into the enable to allow the clock through.
Several variations of this technique are used to reduce the area and delay impact:
• The first variation is using human knowledge to locate an existing enable. For example, if a
register is only active in one particular mode, there is no need to build a bus-specific enable.
You can use the mode control signal as the enable.
• A second variation involves selecting bits to detect changes. PowerArtist selects bits based
on an activity threshold, which may result in the selection of only a few bits out of a bus.
Depending on the actual activity of the bus, it may be profitable to enable fewer of the bits,
or it may be simpler to understand the result if more of the bits are enabled.
In shared LNR analysis, small registers in the same hierarchical module are grouped based on their
power savings.
This PowerBot is enabled by default. To disable it, specify the following command:
ReducePower -skip_reduction_list slnr
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
280 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
Definitions
Low-activity Enabled Register (LER) is a variant of the LNR PowerBot. The difference between LNR
and LER is that LER candidates have existing enables. The LER PowerBot tries to generate an LNR style
enable signal to intersect with and existing enable. This improves the dynamic CGE and saves more
power.
15.3.2.1. Usage
The LER PowerBot is enabled by default when you perform a reduction run (using the 'ReducePower'
command) and works in a vectorless mode. To disable it, specify the following command:
ReducePower -skip_reduction_list ler
• The XOR of register input and output nets, making it more readable. Additionally, bus nets
in the LNR/LER help text are merged into a bus operation, instead of a bit operation. Consider
the sample updated help text:
// Generate enable signal
wire myTmp;
assign myTmp = | (d[7:0] ^ q[7:0]);
// Use the above and the pre-existing enable signal to gate the register
always @(posedge clk)
if (myTmp && (pre-existing enable)) begin
q[7:0] <= d[7:0];
end
• The pre-existing enable condition instead of the inferred names from the enable condition.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 281
Examining and Implementing Power Reduction Opportunities
This PowerBot is enabled by default. To disable it, specify the following command:
ReducePower -skip_reduction_list sler
When there is a clock enable in the RTL and there are datapath operators such as a 'multiply' or
an 'add' in front of the enabled register, the Datapath Operator Isolation (DOI) PowerBot estimates
the power savings gained from latching the datapath inputs when the output is not read.
Definition
The following schematic shows datapath operators going into a register that has an explicit clock
enable. When the enable is off, the datapath output is ignored. In this situation, the datapath is
consuming power to compute a result that is not used:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
282 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
15.3.3.1. Usage
The DOI PowerBot is enabled by default when you perform a reduction run (using the 'ReducePower'
command) and works in a vectorless mode.
15.3.3.2. Implementation
The following schematic shows a way to reduce power for the datapath operators. When the
datapath result is not used, the datapath is kept quiet by isolating it from its inputs with a latch.
The power savings are due to lowered activity in the datapath operators:
15.3.3.3. Trade-offs
When this change is made, the power dissipated in the datapath goes down. There is a penalty
due to the latches that are added. These latches consume a small amount of power and area, and
they also add some delay to the combinational path. If the datapath is on a critical path, this extra
delay might not be acceptable.
For clock enables already present in your HDL, the Local Explicit Clock Enable (LEC) PowerBot estimates
the power savings gained by using a gated clock rather than a mux in a feedback loop.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 283
Examining and Implementing Power Reduction Opportunities
Definition
The following schematic shows a local explicit clock enable. The 'q' output is updated on a rising
edge of 'clk', but only when the signal 'en' is high:
Examples
• Verilog Example:
module enable_example (d, clk, en, q);
input d, clk, en;
output q;
reg q;
always @(posedge clk)
if (en)
q = d;
endmodule
• VHDL Example:
entity enable_example is port (
d, clk, en: in std_logic;
q: out std_logic);
end enable_example;
architecture rtl of enable_example is begin
process (clk) begin
if (clk'event and clk = '1') then
if (en = '1') then
q <= d;
end if;
end if;
end process;
end rtl;
15.3.4.1. Usage
By default, this PowerBot simulates clock-gating by building a cell from your power libraries using
an 'AND' and a 'LATCH' as a clock gating cell. You get this behavior if you do not specify clock
gating commands in the Tcl script of the reduction analysis runs.
• Use the 'SetClockGatingStyle' command to specify your selected clock gating cell type.
Note: The LEC PowerBot ignores the '-min_bit_width' option.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
284 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
• Use 'SetClockBuffer' commands to define the clock buffers to build a buffer tree. The tree is
used to reduce the load on the gated clock output of the ICGC. If 'SetClockBuffer' commands
are not specified, then buffer tree is not created.
• Do not specify 'SetClockNet' commands. Or specify the '-gate_clock false' option with
each 'SetClockNet' command to ensure that the LEC PowerBot is not disabled. Consequently,
you must be careful when using the same clock file for the LEC PowerBot while you are doing
power analysis with automatic clock gate prediction.
15.3.4.2. Implementation
Logic synthesis implements the circuit with a '2:1 mux' or a 'muxed D flip-flop' if one is available in
the target technology. If the enable is low for a significant percentage of the circuit operation, and
if 'd' and 'q' are multi-bit buses, then a substantial amount of power dissipated by the clock driver
is wasted. That is, driving the clock to this register when the enable is low does not change the
circuit behavior.
Another way to implement this circuit is to gate the clock. Replacing the clock input to the flip-flop
with an AND gate whose inputs are the clock and the enable is not safe. Consider a situation when
the clock is high and transitions occur on the enable, edges appear on the register clock input,
possibly causing incorrect circuit behavior.
To avoid these edges, an 'Integrated Clock Gating Cell' (ICGC) must also be inserted so that when
the clock is high, activity on the enable is not transferred to the clock input. The following schematic
illustrates the needed additional circuitry:
Many logic synthesizers have the ability to insert ICGCs into your logic and automatically replace
the feedback multiplexor. Use PowerArtist to predict that style of clock gate insertion using the
'SetClockGatingStyle' command in the clock file.
If you want to control clock gate insertion, then you have two choices:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 285
Examining and Implementing Power Reduction Opportunities
Caution
This type of zero-delay adjustment of the clock can lead to simulation differences, especially in
VHDL. Consider register 'A' driving register 'B', where 'B' has a clock gate. In the original non-gated
version, 'A' and 'B' are activated on the same simulator delta, and data requires two clock cycles to
flow from the input of 'A' to the output of 'B'. In a zero delay environment, if 'B' is gated, the clock
to 'B' appears one delta after the clock to 'A', and data may accidentally flow from the input of 'A'
to the output of 'B' in a single cycle only.
To avoid this problem, use a unit delay environment, where each assignment includes a delay:
• In Verilog:
q = #1 d;
• In VHDL:
q <= d after 1 ps;
15.3.4.3. Trade-offs
When this type of design change is made, the power dissipated on the clock edge goes down. Part
of this power decrease occurs in the register itself and part occurs in the clock driver. At the same
time, the new clock gating circuitry consumes power. PowerArtist estimates the power due to both
these factors. If the power of the new circuit is higher, no change is suggested. In general, for mostly
active enables and small bus widths, the power of the clock gating circuitry outweighs the possible
savings. PowerArtist suggests this change usually for wide registers that are frequently disabled.
Other trade-offs involve area and timing. The area trade-off is similar to the power trade-off. The
clock gating circuitry is added, but offset by the savings in either a simple flop instead of the larger
mux-ed flop, or the removal of the mux for libraries without mux-ed flop cells. The key trade-off is
delay. This design change can actually improve the delay along the path of data, because the mux
is removed. However, it can impact the clock distribution.
Advanced software tools should be able to incorporate this logic into the clock tree with little
impact on clock skew. However, there is a risk that some clock buffer insertion methods might not
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
286 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
be able to hide the effect, resulting in additional clock skew. Ansys recommends that you perform
static timing analysis after clock buffer insertion to ensure that timing problems do not appear.
• Text Report
The LEC PowerBot reports the following as savings achieved in the reduction report:
– Mux Instance savings include:
savings due to '2-1 multiplexor removal' and
savings in the power of the net from the mux to data pin of the register
– Register Instance savings include the gating logic power. This is different from the
'ReducePower' flow where it becomes a part of the clock power of the design.
– Top Component savings include the savings in the clock power and the load power.
– The power due to the load on the output of the inserted ICGC is considered as part of the
clock power of the design.
The graphical user interface displays the following information for every savings opportunity
reported by the LEC PowerBot:
– Parent Module
Is the clock-enable signal name. If it is a user-defined RTL net name, then it is the boolean
expression showing the enable expression.
– Clock Net
Is the ratio of the new clock duty cycle to the original clock duty cycle.
– Gated Nets
Is the cell name and the library containing the chosen ICGC.
In today's memory circuits, a memory array is usually partitioned into several segments. Only one
segment of the array is active at a given point in time, thereby reducing the overall power consumption
of that memory. This means that only a few addresses in memory are frequently accessed. Therefore,
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 287
Examining and Implementing Power Reduction Opportunities
splitting these frequently executed sequences of memory references into smaller-sized, low-power
memories reduces the total energy of the memory.
The Split Memory Words (SMW) PowerBot is designed to reduce dynamic memory power by splitting
a memory into smaller symmetrical parts and asymmetrical parts when the 'ReducePower
-reduction_max_memory_split' command is set to an odd value. To be considered as a potential
candidate for memory splitting, the smaller memories must have identical power rail definitions as
the original large memory. The following schematic shows a memory with a large number of words
split into two smaller memories, each with half the number of words:
Calculations
• Power Calculations
If the dynamic power of the full-size memory is 'Fd' and static power is 'Fs' (static), the total power
'Pf' of the full-size memory is:
Pf = Fd + Fs
The SMW PowerBot looks for a memory in the '.lib' that is half the size of the original memory
and calculates the dynamic ('Hd') and static ('Hs') power of this half-size memory. It assumes that
only one of these half-size memories is active at any time so that the total power 'Ph' of both
memories is:
Ph = Hd + 2 * Hs
This means that the total power of both memories is one half-size dynamic power plus two times
the leakage of the half-size memory. If the SMW PowerBot does not find a half-size memory in the
'.lib', it uses the values defined using the 'DefineHalfMemScalingFactor' command to scale the
static and dynamic power values of the full-size memory to approximate a suitable 'Ph'.
PowerArtist also accounts for the power consumed by the additional circuitry 'Pc'. The total power
'Pt' consumed by the additional circuitry and the split memories 'Ph' is:
Pt = Ph + Pc
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
288 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
the area penalty scaling factor (defined using the 'DefineHalfMemScalingFactor' command) is
used to approximate a suitable new area value.
• Memory Architectures
The power of a read or write to the half-size memory is far less than the power of a read or write
to the full-size memories. Even though the same number of reads and writes are occurring in the
new architecture, the power is reduced because each read or write is on only one of the smaller
memories.
• The activity on the Most Significant Bit (MSB) and the Least Significant Bit (LSB) of the address
bus.
Of the MSB or LSB of the address bus, the one with the lower activity is selected. In
Figure 15.8: Split Memory Words - Schematic Diagram (p. 288), bit '0' can be either the MSB
or LSB of the address bus.
The selected MSB/LSB address bit should be in a stable state (that is, the signal maintains
the state of '0' or '1') for more than a specified number of clock cycles (as defined by the
'DefineMemActivityThreshold' command).
• The state of the chip enable must be active.
• There must be some activity on other address bits of the memory.
To reduce power, SMW splits memories in a tree-like manner. It internally performs analysis for all
combinations of memory splits. By default, the 'ReducePower' command splits the original memory
into two half-size memories. You can increase the number of splits allowed using the
'-reduction_max_memory_split' option. If you set this option to '3', then one of the half-size
memories is further split into two parts, resulting in a total of three smaller-size memories.
For example, if you set '-reduction_max_memory_split to '3' for a memory with an original
size of '2048x32', it is split into the following smaller-size memories: '1024x32', '512x32', and
'512x32'. SMW tries two possible split combinations and recommends the one that results in the
maximum power reduction. It also reports the area overhead, due to the placement of instances
and additional nets in the added circuitry, associated with the recommended split.
15.3.5.2. Usage
Use the following commands to run reduction using the SMW PowerBot:
1. The SMW PowerBot is disabled by default. To enable it, specify the following command:
ReducePower -skip_reduction_list {}
Note: To disable other PowerBots and the SMW PowerBot, you need to list all of them explicitly:
ReducePower -skip_reduction_list {smw odc}
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 289
Examining and Implementing Power Reduction Opportunities
Note: If you do not specify the last two commands, PowerArtist uses their default values.
3. Create a '.tcl' script that includes the 'ReducePower' command with the appropriate options
specified. Two critical options are:
• -activity_file
Specifies the file containing your simulation vectors (VCD or FSDB).
• -synlib_files
Specifies your Liberty libraries. You should specify memories of varying sizes. In absence
of half-size memories, PowerArtist computes a half-size memory using the value of
'DefineHalfMemScalingFactor' (specified in step #2).
6. Run/source the reduction script created in step #3. Internally the script performs the following
steps:
a. Analyzes the simulation input file and generates a '.gaf' file by using the information in
the 'DefineMemory' commands to:
• Monitor the clocks of all recognized memory instances in your design.
• Collect a variety of data for your memories.
• Write statistics on your memories into a side Tcl file ('.stcl'), which is read in the next
step. SMW entries in the '.stcl' file begin with 'splSMWLint'.
The '.gaf' file is required because memory splitting happens only when the memory
activity profile indicates that a particular memory instance is a candidate for memory
splitting. 'ReducePower' then runs the SMW PowerBot, along with the other PowerBots,
with the parameters you specified in step #2.
b. Performs power reduction analysis:
• Reads the data from the '.stcl' file you created in step #6.1.
• Identifies memory splitting opportunities.
• Calculates power savings based on the memory splitting opportunities.
• Writes reduction data into a text report and the power database.
7. Review the reduction data either by reading the text report or viewing it in the 'Simple Reduction
Viewer.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
290 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
run time. You can apply different combinations of the SMW-related parameters for each reduction
run to see the effects of different types of memory splitting. These parameters include:
• '-max_mem_split <integer>' option
• 'DefineHalfMemScalingFactor' command
• 'DefineMemActivityThreshold' command
15.3.5.3. Trade-offs
From an area and layout perspective, this power reduction technique can increase the routing
congestion. Since memories tend to be large and often do not allow routing above them, increasing
the number of memory blocks in the design can make the routing more difficult.
From a delay perspective, the mux on the output adds some delay to the path from address change
to data output. However, the actual memory access time for the smaller memory decreases. Generally,
the access time savings is more than the delay of a mux, so the path becomes faster. However, if
this path is timing critical, you should review the change for its impact on timing.
appended to the end of the Total Power line. If not, you will see the following note:
No power saved. Not selected as a reduction opportunity.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 291
Examining and Implementing Power Reduction Opportunities
----------------------------------------------------------------------------------------------
Note: The formatting in this sample report is modified to fit the available area.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
292 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
assign OA = net[171:140];
assign OB = net[203:171];
endmodule
To implement this change, replace the single memory with two memories, each having half the
number of words. The enable expressions identified in the 'smw.reduction.analysis.red'
file define the select signal that operate as a bank select. This bit should also be used as the select
input to a new multiplexer on the memory outputs. This multiplexer selects the appropriate memory
bank.
The GMC (Gate Memory Clock) reduction technique identifies redundant memory accesses. GMC also
identifies redundant write cycles for memories with byte write enables. The byte write enable pins
mask one or more bytes when writing data to the memory. In certain SRAMs, these pins can be
different from the standard Write Enable (WE) pin.
The GMC PowerBot performs one of two methods of power reduction for memories. It first applies
Method 1 (p. 294) and then applies Method 2 (p. 294).
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 293
Examining and Implementing Power Reduction Opportunities
Method 1
For this method, GMC determines a way to disable the clock in a redundant read/write access mode.
A read/write access is redundant when:
For this method to apply, the memories must fit into one of the following architectures:
If the cell does not meet these criteria, this method is not applied. GMC attempts Method 2 (p. 294).
Method 2
For this method, GMC examines your Liberty files and locates models that lack internal clock gating.
It then turns off the clock when the memory is not accessed. This happens when the memory select
signal is not asserted.
• You can use the 'SetMemoryGatingCell' command to define a list of cells from specific libraries
that should be used.
• If you do not specify one or more 'SetMemoryGatingCell' commands, PowerArtist uses the
ICGCs identified by any 'SetClockGatingStyle' commands that you specify.
The ICGC are used as part of the algorithms to estimate power savings and to rewrite as
instantiated cells in your RTL.
15.3.6.1. Usage
Use the following process to run power reduction using the GMC PowerBot:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
294 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
2. Use 'DefineMemory' commands to define critical ports for the memories used in your
design.
3. Optionally, use 'SetMemoryGatingCell' commands to define the clock gating cells to use
for memory clock gating. Alternatively, you can specify the 'SetClockGatingStyle' command
to define your integrated clock gating cells (ICGCs).
4. Set options for the 'ReducePower' command. The two critical options are:
• Specify a list of memory cell names that you do not want to analyze:
-reduction_dont_touch_modules {module_name1 module_name2 ...}
• Set the following option to 'true' if you do not want GMC to generate address
stability checking logic:
-reduction_memory_disable_edge_detection <true | false>
The detection circuit created is similar to the XOR-OR based circuit used by the
Low-Activity Non-Enabled Register (LNR) (p. 279) PowerBot. In addition, registers are
added to remember the previous address.
5. Run the 'ReducePower' command. Internally this performs the following steps:
a. Analyzes your simulation input file by using the information in your 'DefineMemory'
commands to:
• Monitor the clocks of all recognized memory instances in your design.
• Collect a variety of data for your memories.
• Write statistics on your memories into a side Tcl file ('.stcl'), which is read
in the next step.
6. Review the reduction data either by reading the text report or viewing it in the 'Simple
Reduction' dialog as a potential GMC opportunity.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 295
Examining and Implementing Power Reduction Opportunities
If the memory architecture does not meet the criteria for a redundant memory read analysis, as
described earlier, GMC predicts power savings by gating the memory clock when the memory is
inactive. In this case, the savings are the internal power consumption due to the clock switching
in the memory disabled state. If power is saved, then the memory cell enable signal(s) are used to
gate the actual clock signal(s). The enabled clock(s) then drive the clock input(s) of the memory.
Reduction is performed using the ICGCs specified using the cells defined by the
'SetMemoryGatingCell' or 'SetClockGatingStyle' commands. If these commands are not specified,
the gating logic is modeled using a more traditional circuit consisting of a latch and an 'AND'.
Conditions
Note the following conditions:
Notes:
• In all the above cases, the name of the report depends on the filename specified by the
'SetMacroPowerLinterReportFile' command. If it is not specified, the report is saved by
default as 'mpl.analysis.red'.
• Refer to the PowerArtist Reference Manual for details of these commands.
-------------------------------------------------------
Redundant Total Pin Mode Instance
Cycles Cycles Name Name Name
-------------------------------------------------------
9 15 clk disabled top.mem01.memInst
-------------------------------------------------------
2. Detailed Report
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
296 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
For GMC analysis, you can specify enable conditions as Boolean expressions using the
'DefineMemory' command. The enable conditions are used to generate MPL reports with redundant
activity periods.
The following table shows how PowerArtist interprets lists of memory ports to create conditions
to generate the MPL report:
Note: The expressions are self-evident when specified explicitly through 'DefineMemory'.
The following table shows the relationship between modes, conditions, and input pins for memories:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 297
Examining and Implementing Power Reduction Opportunities
Note: All the mode conditions must be exclusive among themselves and complete together.
Limitation
A redundant access that spans multiple modes that are similar but not identical are not reported.
For example, a 'read+write' access at an address followed by a 'read' access at the same address is
not identified as redundant in the MPL report but is flagged by GMC.
The '-ignore_clk_pins' option accepts one or more clock pins and regular expressions.
Note: Using this option may impact the total power reduction opportunities found through GMC
because test clocks are ignored to analyze the functional clocks of the memory.
15.3.7. Prism
Design Parts: registers
The Prism PowerBot looks for chains of registers where a register early in the chain is enabled. Registers
later in the chain are not enabled, and the enable can be used to gate later registers.
Definitions of Terms
To efficiently use the Prism PowerBot, you should be familiar with the following terms:
• Clock Gating
A power efficient implementation where register banks are disabled during some clock cycles.
The register feedback loop and the multiplexer are removed. The clock gating circuitry is
inserted into the clock path, creating a derated clock that reduces unnecessary register clock
activity.
• Gated Register
A register bank with all its bits enabled through a feedback multiplexer or its clock is driven
by an instantiated integrated clock gating cell.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
298 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
• Candidate Register
A register bank for which both the following conditions are true:
– none of its bits have a mux feedback path.
– its datapath width is greater than or equal to user-defined datapath width specified
using the 'SetDatapathWidth' command.
• Un-Gateable Register
A register bank for which both the following conditions are true:
– none of its bits have a mux feedback path.
– its datapath width is less than the user-defined datapath width. This is not the same
as the minimum bit width required for clock gating.
15.3.7.1. Usage
The Prism PowerBot uses the following flow:
1. It tries to find candidate registers in the design that are downstream to gated registers.
2. For such a candidate register, it then tries to determine if the upstream gated register
enable signal can be used to gate it.
3. It estimates power savings and penalties to determine the effectiveness of the gating.
4. It writes the results into the OpenAccess database for later viewing.
During inferencing, vectored registers are broken out into their own registers. This makes for easy
visualization of data paths. It also recognizes that data paths are often manipulated the same way
across all bits.
Prism creates enables for non-enabled registers that feed other registers downstream. Chains of
registers that had ungated registers as the first register in the chain are enabled using XOR enable
generation and all subsequent register stages use a propagated enable. This XOR enable generation
capability is the same used by the Low-Activity Non-Enabled Register (LNR) (p. 279) PowerBot. In
addition, Prism strengthens power-inefficient (weak) enables so that clocks are turned off for longer
durations saving more power. It does this by reusing existing enables of upstream registers. This
enable quality analysis is the same used by the Clock Enable Condition (CEC) Linter (p. 336) PowerBot.
Before running power reduction with Prism, you can define the analysis conditions by providing
specific inputs using the '-tcl' option or using the PowerArtist command file. You can set the
following conditions:
1. Set the data path width. As previously mentioned, a data path is a vectored signal inferred
as a register instance. You can specifically indicate how many bits wide a data path must
be before it should be considered a candidate register. You do this using the
'SetDatapathWidth' command. The default width is '8' bits.
2. Specify the names modules you do not want to analyze. To do this use the
'SetExcludeModules' command (which is similar to the 'Elaborate -black_box_modules
{string_list}' command).
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 299
Examining and Implementing Power Reduction Opportunities
3. Control the 'min' and 'max' bit widths for XOR enable creation as part of Prism. This is
controlled using the '-min_bit_width' and '-max_bit_width' options of the
'ReducePower' command.
Registers that are not part of a Prism chain and have acceptable power savings:
• Any register < '-min_bit_width' wide are completely ignored as an LNR
opportunity
• Any register >= '-min_bit_width' are written to the reduction database as an
LNR opportunity.
• Any register >= '-min_bit_width' and <= '-max_bit_width' are automatically
accepted as an LNR opportunity in the reduction database.
The behavior of registers that are part of a Prism chain remains the same:
• Prism generates an enable for registers <= '-max_bit_width'.
• If the register is >= '-min_bit_width', Prism clock gates it.
• If the register is < '-min_bit_width', Prism does not clock gate it.
The Prism PowerBot is enabled by default when you perform a reduction run (using the
'ReducePower' command) and works in a vectorless mode. To disable the PowerBot, specify the
following option:
ReducePower -skip_reduction_list prism
This section summarizes the impact that making the changes suggested by Prism have on
your design and your development schedule. It tells you the number of register bits in your
design, how many of those bits are gated and how difficult it is to make changes to reduce
power. See the following sample section for details on the information it provides.
1. Design Summary
------------------
Total number of register bits : 758
Number of gated register bits : 481
Number of gated register bits forming the head of a Prism chain : 224
Number of candidate register bits: 128
Easy bits (only gated upstream) : 32
Medium bits (no ungateable count upstream) : 32
Hard bits (everything else) : 64
This section presents all the chains starting from the gated registers of the design. A chain
describes the gated register and the downstream candidate registers. The candidate register
description captures the following upstream counts:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
300 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
This is the number of upstream gated register links in the chain. They are sources of
enables that stand a very high probability of being useful.
This is the number of upstream candidate register links in the chain. These have at
least one gate register upstream link.
In this example,
– There are two chains: 'G0: top.upper.upReg.#13' and 'G2:
top.lower.upReg.#13'.
The 'G#' means that 'G' is a gated register and '#' is the index number such that the
chain can be easily referred to when Prism analyzes a large block.
– The 'C1' line, which is indented below 'G1', represents 'top.upper.downReg.#15'
and it has:
'1g' means 1 gated register upstream and that is 'G0'.
'0c' means no upstream candidate registers.
'0u' means no upstream ungated registers.
– Similarly, 'C3' has 'G2' as its only upstream dependency.
– Lastly, 'C4', represents 'top.CReg.#15' and it has 2 upstream candidate
dependencies: 'C1' and 'C3'. So, unless 'C1' and 'C3' are gated, it cannot be gated.
This section presents information about the participating instances in the chains described
in 'Section 2'.
For a 'G-type (gated)' instance, the report tells you its width, clock, and enable. Consider
the following detailed sample data for a gated register:
G5: core1.s1.#646
-----------------
Register core1.s1.wdtmr[0:31] is in module stats
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 301
Examining and Implementing Power Reduction Opportunities
Width: 32
Clock Net: top.clk
Local Clock: clk
Enable Net: top.core1.en_wdtmr, Local Expression: en_wdtmr
Clock Enable duty: 1, Optimal: 0.0512821
Percent clock-gated: 0%, Optimal: 94.8718%
CDC: false
It drives 1 candidate registers in 1 module
– Register
The full path to the register and the module in which it is defined - 'G5:
core1.s1.#646'.
– Width
– Clock Net
– Local Clock
The net name of the clock using its local scope name so you can find it more easily
in the source file - 'clk'.
– Enable Net
The full path to the enable net 'top.core1.en_wdtmr' and the local expression
for this enable net is 'en_wdtmr'.
These are the 'normal' and 'optimal' duty cycles of the enable signals. The normal
duty cycle is the percentage of time the existing enable is at '1'. The optimal value
is calculated when the data inputs to the register are changing and algorithmically
determining how long the enable must be '1' to ideally match the data changes. In
this example, the normal duty cycle is '1' and the optimal is '0.0512821'.
These are the 'normal' and 'optimal' clock gating percentages. This represents the
percentage of clock cycles the clock is disabled. The optimal is calculated based on
the percentage of clock cycles that data changed and the register is enabled. In this
example, the normal value is '0%' and optimal value is '94.8718%'.
– CDC
The value 'false' means this register does not cross clock domains and it is in one
clock domain. The value 'true' would mean that the register is in more than one
clock domain.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
302 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
– For this instance, the last line in the report says that there is only one upstream
enable.
For a 'C-type' instance, the report tells you its clock and the enable information that can
be used to gate the clock of the instance. It also tells you the bits of the data path that can
be gated. Consider the following sample data for a 'C-type' instance:
C10: core1.s1.#645
-----------------
Register core1.s1.dout[0:31] is in module stats
Width: 32
Clock Net: top.clk
Local Clock: clk
Clock Enable duty: 1, Optimal: 1
Percent clock-gated: 0%, Optimal: 0%
CDC: false
It could be gated by OR'ing 5 enable(s).
5 enables are available locally.
The information given for this C-type instance is similar to that given for the gated register.
The details for instance 'C10: core1.s1.#645' indicate that it can be gated by OR'ing
5 enable(s), which are available locally.
The reduction report summarizes each opportunity from a power savings point of view.
Consider the following sample report:
Analysis type = Normal
Reg Power Saved Total Saved Reg Saved Clock Ideal Reg Ideal Clock Instance Name
--------- ----------- --------- ----------- --------- ----------- -------------
Reg Power Saved Total Saved Reg Saved Clock Ideal Reg Ideal Clock Instance Name
--------- ----------- --------- ----------- --------- ----------- -------------
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 303
Examining and Implementing Power Reduction Opportunities
You can switch between these values in the Prism dialog in the PowerArtist GUI.
This section provides the cumulative power savings using existing enables and new enables.
It also is categorized by analysis type: Normal and Optimal. A sample is shown below:
5. Cumulative Savings
---------------------
The Observability Don't Care (ODC) PowerBot generates enable signals by examining the topology
of your circuit and determining the conditions under which the outputs of your registers are not
observable by downstream registers. These conditions are then used as clock enable signals on the
upstream register. Depending on your design, this may save a significant amount of dynamic power
at the cost of increased area and slight timing impacts (see Trade-offs (p. 306)).
15.3.8.1. Usage
The Observability Don't Care (ODC) PowerBot goes through the following process.
1. Locates register banks that are not clock gated. These are the candidate registers.
2. Locates all the registers in the downstream cone of logic, if the candidate register meets
user supplied constraints.
3. Locates all 2-1 muxes, unencoded muxes, and tri-states in the paths connecting a candidate
register to all downstream registers. These instances form the critical steering logic that
determines if a register output can be observed by downstream registers.
4. Examines the select lines for each steering logic instance to determine the conditions under
which the register output is not observable by any downstream register.
5. If such a condition exists, it becomes a potential enable for the candidate register. If the
signals in the enable expression are all direct outputs of registers and not boolean
combinations of other signals, this means that the enable signal can easily be made available
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
304 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
'one clock cycle earlier' with no penalty to precompute the logic. If the signals do not meet
this 'no precompute required' constraint, the opportunity is discarded as a potential ODC
candidate.
You can review the results in the 'Simple Power Reduction' dialog in the PowerArtist GUI to see if
you agree with the automatic selections and deselect those that you do not want to accept. ODC
also recognizes opportunities for enable strengthening, but it does not automatically accept them.
Disabling ODC
ODC is enabled by default when you perform a reduction run. You can disable ODC by doing any
of the following:
The ODC PowerBot ignores the registers whose bit-widths do not meet the specified minimum
bit width constraint and the '-reduction_max_bit_width' constraint.
• Decreased buffers in the clock tree that were driving the candidate register bits directly.
• Reduced clock power in the candidate register due to the reduced number of times the
clock pin toggles on all the candidate register bits.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 305
Examining and Implementing Power Reduction Opportunities
• The savings in the cone of logic downstream from the candidate register due to fewer toggles
appearing at the outputs of the candidate register.
Area impacts primarily occur due to the extra circuitry needed to implement the new clock enable
and the clock distribution network due to the additional ICGC that is synthesized.
15.3.8.3. Trade-offs
As with any clock gating technique, there are area and delay trade-offs you have to make versus
the power saved. Area and delay may both increase due to the combinational logic that must be
added to your circuit to create the enable signal. In general, as long as the number of clock gated
bits is reasonable, which is probably 3 or more, the savings outweigh the area impact.
• An ODC reduction takes priority over an LNR reduction. In general, the LNR reduction XOR
tree has a higher power penalty. Also, ODC works on register banks of any size while it is
recommended that register banks > 16 bits wide are not considered by LNR due to a high
power and timing penalty.
• Different PowerBots work together to provide more savings than you may otherwise expect.
For example, Prism may detect a large savings opportunity but there is no enable signal for
the first register in one of the chains. In such situations where Prism needs to generate an
enable, it uses LNR.
• If the register being enabled is the last register in a chain, PowerArtist compares the power
savings between the two implementation choices and chooses the one that saves more
power.
• Example 1:
module top(clk, en1_nxt, en2_nxt, d, qout1, qout2);
input clk;
input en1_nxt, en2_nxt;
input [7:0] d;
output [6:0] qout2;
output qout1;
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
306 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
The strict and realizable ODC expression for the bits 'q[6:0]' is '(en1 == 1'b0)' and for the
bit 'q[7]' is '((en1 == 1'b0) || (en2 == 1'b0))'. The gating on bit 'q[7]' is missed
upon using these condition. Instead, the ODC expression '(en1 == 1'b0)' can be used for all
the bits 'q[7:0]'.
• Example 2:
module top(clk, en1_nxt, en2_nxt, d, qout1, qout2);
input clk;
input en1_nxt, en2_nxt;
input [7:0] d;
output [6:0] qout2;
output qout1;
reg qout1;
reg [6:0] qout2;
always @(posedge clk) begin
qout1 <= q_int[7];
if (en2) qout2 <= q_int[6:0];
end
endmodule
The strict and realizable ODC expression for the bit 'q[7]' is '(en1 == 1'b0)' and for the bits
'q[6:0]' is '((en1 == 1'b0) || (en2 == 1'b0))'. Upon using these conditions, 'q[7]'
is missed from clock gating because the bit width is '1'. The bit 'q[7]' can be combined with
bits 'q[6:0]' by using a weaker ODC condition '(en1 == 1'b0)'.
reg [7:0] q;
reg [0:0] s1, s2;
always @(posedge clk) begin
q <= d;
s1 <= s1_nxt;
s2 <= s2_nxt;
end
wire [7:0] q1, q2;
assign q1 = s1 ? q : 'b0;
assign q2 = s2 ? q1 : 'b0;
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 307
Examining and Implementing Power Reduction Opportunities
The ODC expression for the bits 'q[7:0]' is '((s1 == 1'b0) || (s2 == 1'b0))'. The
enable expression is '((s1_nxt == 1'b1) && (s2_nxt == 1'b1))'. If the simulation
activity is such that 's2' is 'always logic 1', then the ODC expression can be reduced to '(s1
== 1'b0)' and the enable to '(s1_nxt == 1'b1)'.
Pruning is disabled by default. You can enable it by using the following variable:
pa_set reduction_odc_prune_dont_care_variables true
The ODC condition for bits 'q[7:0]' is '(sel == 1'b1)'. The flop 'sel[0]' has an active low
asynchronous reset ('nrst') that sets the value of the flop to '1'b0' making the flop bits 'q[7:0]'
observable. Thus, the ODC gating is not safe here.
The ODC analysis is improved to consider the observability of the flop under reset conditions in
deciding whether to gate the flop or not. Consider the following example design:
module top(clk, nreset, sel_next1, sel_next2, sel_next3, din, qout);
input clk, nreset;
input sel_next1, sel_next2, sel_next3;
input [7:0] din;
output [7:0] qout;
reg [7:0] q;
always @(posedge clk) begin
q <= din;
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
308 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
end
reg sel1, sel2, sel3;
always @(posedge clk or negedge nreset) begin
if (~nerest) begin
sel2 <= 1'b0;
sel1 <= 1'b0;
sel3 <= 1'b1;
end
else begin
sel2 <= sel_next2;
sel1 <= sel_next1;
sel3 <= sel_next3;
end
end
wire [7:0] qout1 = (sel1) ? 8'd0 : q;
wire [7:0] qout2 = sel2 ? qout1 : 8'd0;
assign qout = sel3 ? 8'd0 : qout2;
endmodule
Even though the flop bits 'q[7:0]' are missing the reset, they can be safely gated using the
following enable expression:
(~sel_next1 & (sel_next2 & ~sel_next3))
The following variable provides additional user control on the maximum number of allowed flop-start
points for precompute logic to trade-off runtime and QoR:
pa_set reduction_odc_max_precompute_inputs <integer>
By default, this limit is set to '256'. This limits the amount of precompute logic processed to improve
runtime. Reducing the value of this variable may reduce the number of ODC opportunities.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 309
Examining and Implementing Power Reduction Opportunities
There are three levels of logic and three inputs. The inputs are counted only after the final level of
logic is traced.
The '.rpt' file contains an entry in section '4. Power Reduction by Technique' that looks like the
following file excerpt:
4. Power Reduction by Technique
===============================
<snip>
Core Core
Core Techniques Dynamic Saving Total Saving
----------------------------------------------------------------------------
Potential : 93.6uW 11.51% 93.3uW 11.35%
Observability Don't Care :
Auto-accepted : Topology based auto-accept#
Potential : 92.5uW 6.60% 92.4uW 6.54%
The 'Simple Reductions' dialog displays ODC opportunities. To display only ODC opportunities,
filter on 'Reductions contain ODC'. If you select 'Show Downstream Cone' on an ODC candidate
register in the 'Simple Reductions' dialog, the schematic shows the downstream cone of the
candidate register and the downstream cones of the flops that participate in the ODC expression.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
310 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
In this figure, gate '#843' is the candidate register to which ODC gating can be applied. The steering
logic is mux '#1845' and it's select pin upstream cone terminates at instance '#760'.
The PowerArtist GUI is enhanced so that when a cone is requested for more than a single entity,
the designer is given the opportunity to observe each bit of the operation and cancel it once they
observe enough information about the cone.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 311
Examining and Implementing Power Reduction Opportunities
This updates the graphics for each element of the cone. It takes longer but gives earlier
visual feedback.
This is faster, but contains more bits than requested, and is therefore less accurate.
Use this dialog to cancel a potentially long operation instead of waiting for it to complete.
When you select an ODC (or SODC) candidate, the 'Notes' pane below the reduction candidate list
shows the detailed explanation for that candidate. The Notes for a sample ODC opportunity is
shown below:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
312 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
The default value is 'false'. Setting this variable to 'true' generates the 'ODC Notes' but can
increase the runtime of ODC analysis and the size of the reduction power database.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 313
Examining and Implementing Power Reduction Opportunities
• ODC condition in each stage of the derivation process: original, pruned, optimized, merged,
untimed enable, and timed enable.
• The clock gating efficiency (CGE) of the ODC condition (if it is used to generate an enable
signal).
• The supplied instance list, which lists all the steering gates and registers that provide the
ODC condition. Registers in this instance list drive steering gates in the next sequential stage
that affect the candidate register's observability.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
314 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
Notes:
• Due to the performance cost of calculating CGE for ODC conditions that contain more than 20
operators ('&', '|', '^'), CGE is calculated and the expression is not presented.
• If an ODC candidate has CGE of '0' after merging, its analysis note is not presented in the 'Notes'
pane.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 315
Examining and Implementing Power Reduction Opportunities
In this figure, the observability of the outputs of registers 'R1' and 'R2' is a function of the downstream
mux select. Only one register output is observable downstream for a given logic value of the mux
select. If the mux select signal is available a clock cycle earlier, at the input of the register 'R3', then
that cycle-early mux select signal is used to strengthen the clock enable conditions for registers 'R1'
and 'R2', which are already clock gated with enables 'EN1' and 'EN2' respectively.
Definitions of Terms
To use the SODC PowerBot effectively, you should be familiar with the following terms:
• Clock Gating
A power efficient implementation where register banks are disabled during some clock cycles.
The register feedback loop and the multiplexer are removed. The clock gating circuitry is
inserted into the clock path, creating a lower frequency clock that reduces unnecessary register
clock activity.
• Gated Register
A register bank where some or all of its bits are enabled through a feedback multiplexer or
has its clock driven by an instantiated integrated clock gating cell.
A register bank for which both the following conditions are true:
– Some or all its bits have a mux feedback path.
– Its data path width is greater than or equal to the minimum bit threshold required for
clock gating. For example, a register instance with scalar bits is not considered.
15.3.9.1. Usage
The SODC PowerBot is enabled by default when you perform a reduction run (using the
'ReducePower' command) and works in a vectorless mode. Before running power reduction with
SODC, you can define the analysis conditions that determine when SODC is applied by providing
different options to the 'ReducePower' command:
• To exclude all clock-related PowerBots, you can specify the '-reduction_classes' option
and exclude the 'clock' class:
ReducePower -reduction_classes linter logic memory
This disables the SODC, ODC, LEC, LNR, and Prism PowerBots.
• To exclude certain registers from consideration by SODC, specify the following option:
ReducePower -reduction_min_bit_width_clocks {min_value}
The SODC PowerBot ignores the registers whose bit-widths do not meet the specified
minimum bit width constraint and the '-reduction_max_bit_width' constraint.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
316 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
When this command is specified, PowerArtist does not perform SODC analysis on the instance
'top.blk1', but ODC analysis is performed.
15.3.9.2. Implementation
When you run reduction, SODC goes through the following process:
For candidate registers, it searches for 2-1 muxes, unencoded muxes, and tri-states that
steer logic results to downstream registers. The select lines for those devices can be
combined with existing enables for the upstream register if the select line is directly
generated as an output of a register. The SODC PowerBot does not support pre-computation
of the enable strengthening expression.
2. Estimates power savings and penalties to determine the effectiveness of the gating.
3. Writes the results into the power database for later viewing. You can view the results in
the 'Simple Reduction Dialog' in the GUI.
During inferencing, vectored registers are broken out into their own registers. This enables easy
visualization of data paths. It also recognizes that data paths are often manipulated the same way
across all bits.
• The penalty power includes the boolean expression required to implement the enable signal
strengthening expression.
• The power savings are due to:
– Reduced clock power in the candidate register due to the reduced number of times
the clock pin toggles on all the candidate register bits.
– The savings in the cone of logic downstream from the candidate register due to fewer
toggles appearing at the outputs of the candidate register.
• Area impacts primarily occur due to the extra circuitry needed to implement the clock enable
strengthening expression.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 317
Examining and Implementing Power Reduction Opportunities
15.3.9.4. Trade-offs
As with any clock gating technique, there are area and delay trade-offs you have to make versus
the power saved. Area and delay may both increase due to the combinational logic that must be
added to your circuit to create the enable signal. In general, as long as the number of clock gated
bits is reasonable, which is probably 3 or more, the savings outweigh the area impact.
The Simple Reduction' dialog displays SODC opportunities, as shown in the following figure:
To display only SODC opportunities, filter on 'Reductions contain SODC'. If you select 'Show
Downstream Cone' on an ODC candidate register in the Simple Reduction Viewer, the schematic
shows the downstream cone of the candidate register and the downstream cones of the flops
that participate in the SODC expression.
The 'What's This?' (tool tip) text for the 'Gating Power' column in the 'Details' pane is updated.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
318 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
The text explains that SODC candidates have zero value, because the SODC reduction technique
tries to strengthen existing enables and does not insert a clock gating circuit.
• Text Report
In addition, the '.srpt' file contains an entry in section '4. Power Reduction by Technique' that
looks like the following file excerpt:
4. Power Reduction by Technique
===============================
<snip>
Core Core
Core Techniques Dynamic Saving Total Saving
----------------------------------------------------------------------------
Potential : 93.6uW 11.51% 93.3uW 11.35%
Observability Don't Care :
Auto-accepted : Topology based auto-accept#
Strengthened : 7.96uW 0.98% 7.94uW 0.97%
Potential : 7.96uW 0.98% 7.94uW 0.97%
The SODC results are reported in the 'Strengthened' category (highlighted in red) in the
Observability Don't care section shown here. In this example, the total savings (if you implemented
the suggested SODC reduction opportunities) would be '7.94uW'.
Note: The SODC reduction opportunities are never automatically accepted but you can schedule
all changes manually.
• The inferred net names in the enable expressions are replaced by the optimized driving
expression for the inferred nets, which allows further optimization on the new enable
expression.
• The optimized driving logic of such inferred nets is reported in the 'Note' tab of the 'Simple
Reduction Viewer'.
• The value reported in the 'En Depth' and 'En Literals' columns is calculated based
on the new enable expression.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 319
Examining and Implementing Power Reduction Opportunities
These conditions are then used as clock enable signals on the upstream register. A new variant of
the ODC algorithm is now available, which gives better performance and power savings, especially
on large designs.
15.3.10.1. Usage
Do the following steps to enable the new ODC PowerBot algorithm:
1. Set the following variable to 'true' to run the algorithm during elaboration:
pa_set elaborate_enable_advanced_enable_extraction <true | false>
This step generates an enable file. By default, the enable file name is 'enable.xml.gz'.
Use the following variable to change the default name:
pa_set reduction_clock_gating_enable_file <filename>
Use the following variable to ignore the generation of the ODC data:
pa_set skip_reduction_list reduction_type {odc}
ODC generates enable signals by examining the topology of the circuit and determining the
conditions under which the outputs of the registers are not observable by downstream
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
320 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
registers. These conditions are then used as clock enable signals on the upstream register
to save significant amount of dynamic power at the cost of area penalty.
The report contains information about the clock enable expressions. The report provides
details on ODC reduction opportunity for each enable expression and how much power can
be saved with how much area penalty. The 'ODC-by-enable' report also groups the ODC
suggested register bits by their clock enable logic. The report is sorted in descending order
of power savings. In case of similar power savings, sorting is based on the number of register
bits, area overhead, and CGE improvements.
1. Enable Expression : (((((e299 & e300) & (e302 & e303)) | ((e299 & e300) &
(e303 & ~(e302)))) | ((e299 & e300) & e302)) | ((e299 & e300) & (~(e302) & ~(e303))))
e299: orpsoc_top.wb_ctrl0.fifo.#n1
e300: orpsoc_top.wb_ctrl0.delay1.#n2
e302: orpsoc_top.wb_ctrl0.fifo.#n7
e303: orpsoc_top.wb_ctrl0.fifo.#n8
<snip>
• ReportReductions
The 'ReportReductions' command reads the reduction power database and generates a
CSV file of the reductions in the design:
ReportReductions -pdb ** -csv ** -reds {odc}
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 321
Examining and Implementing Power Reduction Opportunities
• Enable extraction for latches and instantiated registers are not supported yet.
• Technology libraries are not automatically parsed for memory and ICGC information.
15.3.11.1. Usage
Do the following steps to perform STC analysis:
1. Set the following variable to 'true' to run the algorithm during elaboration:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
322 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction PowerBots
This step generates an enable file. By default, the enable file name is 'enable.xml.gz'.
Use the following variable to change the default name:
pa_set reduction_clock_gating_enable_file <filename>
Use the following variable to ignore the generation of the STC data:
pa_set skip_reduction_list reduction_type {stc}
The report contains information about the STC enable expressions. A sample report is shown
below:
Clock Gate Groups:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 323
Examining and Implementing Power Reduction Opportunities
<snip>
• ReportReductions
The 'ReportReductions' command reads the reduction power database and generates a
CSV file of the reductions in the design:
ReportReductions -pdb ** -csv ** -reds {stc}
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
324 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Linter PowerBots
Since power analyses at the RT level of abstraction are made through net toggles, monitoring wasted
power is equivalent to monitoring extraneous net toggles, and estimating the amount of power saved
if the unneeded toggles were eliminated. The PowerBots in this section find the amount of wasted
power at the inputs of three very common design components. They determine whether a certain
toggle at the input of the device was used, or ignored. Based on the wasted toggle data collected
during the reduction analysis process, it generates the wasted power numbers. You can then use the
PowerCanvas to display the wasted power results and then decide what changes you may want to
make to your design. These results include: an estimate of the amount of power wasted in each case,
the kind of wasted power, the instance in which the power is getting wasted, and which nets form the
input of that instance. The Mux Power Linter provides some critical additional information. It traces
'cones of logic' for the inputs that have wasted power and presents this information in the PowerCanvas.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 325
Examining and Implementing Power Reduction Opportunities
The next sections describe the available power linter PowerBots in detail.
The Memory Power Linter (MEM) PowerBot finds the memories in the design and monitors the data
input to the memories to see if changes in the data input ports were wasted because the memory
was not selected for a write access. This PowerBot also estimates the amount of power lost due to
the wasted activity on the input data bus.
Definition
If the input data bus to a memory changes one or more times and that memory is not selected for
a write access before the input data line toggles again, the toggles on the input data bus of the
memory are considered as extraneous toggles, which cause power to be wasted. The following
schematic shows data changing at input 'DATA' to the memory. However, the write enable ('WE') to
the memory is not valid during the data change and is not written into the memory at 'ADDR'.
Therefore, this extraneous transition of the data causes power to be wasted.
15.4.1.1. Implementation
Unused toggles on the memory input data bus can be desirable or undesirable. Depending on your
design, there are several ways to implement more efficient circuitry to reduce extraneous activity
on the input data bus for the memory. This PowerBot is essentially an analysis tool that points out
the potential areas of concern. The analysis is very much design and simulation dependent. The
PowerBot monitors the input data bus of the memory only if the bits of the input data bus and the
write enable are monitored by your simulator. Inferred nets are not monitored for extraneous
activity/wasted power.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
326 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Linter PowerBots
15.4.1.2. Usage
The MEM PowerBot is enabled by default. Use the following command to disable it:
ReducePower -skip_reduction_list {mem}
MEM analyzes memory input pin/bus toggles per clock cycle and redundant toggles and the
corresponding wasted power is identified as follows:
The MUX Power Linter (MUX) PowerBot locates all multiplexors in the design and monitors their inputs
to see if certain input toggles are unnecessary due to the input not being selected. It also estimates
the power in the cones of logic leading up to the inputs with the wasted power. This estimate allows
you to determine whether you see a significant benefit from reducing the power upstream in the
cone.
Definition
If the input net to a multiplexor toggles one or more times and that input is not selected by the
multiplexor before it toggles again, the toggles on that input of the multiplexor are considered wasted.
This means that there is activity that consumes power on that pin of the multiplexor, but that activity
is meaningless. The following schematic shows a multiplexor which initially selects the 'B' input. The
power consumed by the transitioning that appears on 'A' during the 'B' select period is considered
wasted power as it is not relayed to any other part of the design.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 327
Examining and Implementing Power Reduction Opportunities
15.4.2.1. Implementation
The unused toggles on the multiplexor can be desirable or undesirable. Depending on your design,
there are many ways of implementing more efficient circuitry upstream from the multiplexor which
can reduce wasted activity at the multiplexor. This PowerBot is essentially an analysis tool that
points out the potential areas of concern. The analysis is very much design and simulation dependent.
The PowerBot monitors an input of a multiplexor only if the associated net is monitored by your
simulator. Inferred nets are not monitored for extraneous activity/wasted power.
15.4.2.2. Usage
The MUX PowerBot is enabled by default. Use the following command to disable it:
ReducePower -skip_reduction_list {mux}
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
328 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Linter PowerBots
• The 'Linter Reductions' dialog contains special columns in the upper pane that provide data that
can help you determine whether the power savings would be worth the effort to implement the
power reduction opportunity revealed by the technique. For details, see section 'Information in
the Upper Pane (p. 329)'.
• In the tabbed pane within the 'Detail' tab, there is detailed information that can help you
determine the specific changes you need to make. For details, see section 'Information in the
Tabbed Pane (p. 331)'.
After reviewing the dialog data, if you determine that there is a reduction opportunity worth
investigating further, you can display logic cones in the 'Schematic Viewer' that help you to better
understand the scope of the changes required. To do this, select and right-click an input pin in the
'Detail' tab to display the logic cones. For details, see section 'Schematic Display for the Mux Power
Linter (p. 331)'.
• Wasted Power
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 329
Examining and Implementing Power Reduction Opportunities
The Mux Power Linter (MUX) points out power that is wasted in muxes due to toggles on
mux data inputs that are not passed to the mux output because the select line is selecting
other data inputs when those toggles happen. There is certainly wasted power in the mux
itself. However, the cone of logic that generates the ignored toggles is a potential source
of far more wasted power. The data provided in the Mux Power Linter shows you the
magnitude of the power that is wasted.
• Cone Power
One of the columns in the upper pane is 'Cone Power'. This represents the power of all
the instances and nets in one or more exclusive logic cones associated with the instance.
An exclusive logic cone is the cone of logic that drives a particular pin on a 2-1 or
unencoded mux instance that does not fanout to any other pin.
The cone of logic stops when it reaches a sequential instance (register, latch, register file,
latch file, memory), a blackbox instance, a bus pin of vendor gate instance, a primary input
to the design or an inferred instance whose input pin is driven by an instance that fans
out outside the cone. The cone of logic is traced through the select pins of 2-1 and
unencoded muxes and tri-state enable pins.
Larger cone power numbers normally represent excellent opportunities to reduce power.
If you are able to suppress toggles entering the exclusive cone, then those toggles do not
ripple through the cone and do not cause excessive dynamic power.
The 'exclusive' cone power is the sum of the power of all of the nets and instances in the
cone except for instances that are vectored. For vectored instances, the instance total
power number is divided by the number of output bits of the device and it is added to
the exclusive cone power. Examples of vectored instances are registers, latches, register
files, latch files adders, multipliers, tri-states, buffers, nots, unencoded muxes, and 2-1
muxes.
• Start Points
Another column is 'Start Points'. This represents a count of the number of entry points
into the exclusive cone of logic. These are the places that logic should be inserted to
suppress toggles in the exclusive cone. Generally. the smaller the number of 'Start Points',
the easier it is to determine logic to suppress excess toggles. The start points are
determined as follows:
– For inferred registers, latches, register files and latch files, the start point is the 'din'
pin that generates the 'dout' value. Therefore, if the exclusive cone is traced back to
'dout[i]', tracing stops at this instance and 'din[i]' is listed as a start point. For
sequential vendor gates, all the input pins are listed as a start point.
– For a blackbox, tracing stops at those instances and no start point is listed.
– For a combinational vendor gate, tracing stops at the vector pin, if any, of the instances
and all the input pins are listed as start point. In an RTL design, it should be rare that
you see these instances.
– For a primary input, it is the input pin of the instance driven by the primary input.
– For all other 'Start Points', it is the input pin of the instance reached where exclusivity
stops.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
330 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Linter PowerBots
In short, you need to consider both the 'Cone Power' number (whether it is high) and the number
of 'Start Points' when you determine the reduction opportunities to pursue first.
• Input_pins: This is the list of pins on the 2-1 or unencoded mux that have wasted power.
It can be a single pin or a vector.
• Cone Power: The power of the exclusive cone of logic leading to that pin.
• Start Points: The number of start points associated with the exclusive cone of logic for
that point.
• Pcnt Idle: The percentage of time that the inputs pins were idle. Therefore, it represents
potential wasted power.
If you add the 'Cone Power' and the 'Start Points' for all the pins, they match their corresponding
accumulated number in the upper pane. If you select an 'input pin', the following columns in the
right-side sub-pane are populated:
• Input Nets: This is a list of nets attached to the selected 'input pin'. This can be a scalar
net, a vector, or a combination of the two.
• Start Pins: This is the list of 'Start Pins' for the exclusive cone leading to this pin. The
number of Start Pins is equal to the Start Point count.
• Select Nets: These are the select lines that control the 'input pin'.
• Input Pin: If you select an input pin and right-click, you can display the full logic cone or
the exclusive logic cone for that pin in the 'Schematic Viewer'.
• Input Net: If you select an input net and right-click, you can display a logic waveform.
• Start Pin: If you select a start pin and right-click, you can display the full logic cone or
the exclusive logic cone for that pin in the 'Schematic Viewer'.
• Select Net: If you select a select net, you can display a logic waveform.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 331
Examining and Implementing Power Reduction Opportunities
If you select Schematic > Colorized By > Connectivity, the following color scheme is applied to
exclusive cones in the 'Schematic Viewer':
• Green: Indicates a 2-1 or unencoded mux from which the exclusive cone of logic is traced. All
the instances in the exclusive cone generate logic for an input pin of this instance.
• Red: Indicates that these are the 'stop at' instances. These are instances that have one or more
'start pins'. They are registers, latches, register files, latch files, black-boxes, sequential vendor
gates, and instances where the exclusive cone stops.
• Blue: Indicates that these instances are 'next to last stop at' instances. You must insert logic
between the 'stop at' instance and the 'next to last' instance to suppress wasted toggles.
• Yellow: Indicates that these are elements in the select path that were not colored as a 'start',
'end', or 'next to last stop at' instance.
The View > Schematic Legend menu displays the coloring. If you select the Schematic > When
Tracing menu options, then datapaths logic or select logic is displayed and colored uniquely.
Additional colors are also explained in the legend. The legend uses the word 'penultimate' which
means 'next to last' and applies to the 'next to last stop at' instance.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
332 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Linter PowerBots
• 2-1 mux and unencoded mux: If 'out[i]' is reached, then 'a_in[i]', 'b_in[i]', and 'c_in[i]',
are continuation points. The select pins for a 2-1 mux and an unencoded mux are also continuation
points.
• The total power is the sum of the mux instance's total power and its exclusive fanin cone power.
• The total wasted power is the sum of mux instance power and cone power multiplied by the
proportion of time that the input is idle.
• Mux input pins that do not have an exclusive fanin cone are not displayed in the 'Details' tab in
the 'Reduction Viewer'. When displaying the exclusive fanin cone of a mux input in the 'Schematic'
from the ' Detail' pane of the mux linter, the cone is traced for all of the bits of the input port
instead of just those shown in the 'Detail' pane.
• Mux input pins that do not have unused data toggles are displayed in the 'Details' tab in the
'Reduction Viewer'.
GUI Enhancement
The tooltip descriptions in the GUI, launched by the 'What's This?' button are modified to reflect
the changes described above:
• Total power for the multiplexer linter candidate includes exclusive fan-in cone power in addition
to instance power.
• Wasted power of multiplexer linter candidate includes estimated wasted cone power, in addition
to wasted candidate instance power.
When the select line of a multiplexer instance does not have simulation activity, as in the case of
inferred select nets, the multiplexer activity linter traces the select net upstream to find an expression
composed of nets with simulation activity. To avoid adverse performance impact, the expression
tracing has limits on depth and total variables in the tracing expression. The default depth limit is
set to '8' and the default variable count is set to '32'.
You can use the following variables to change the default values:
• To limit the number of variables in the tracing expression for select lines:
pa_set reduction_mux_max_expression_literals <integer>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 333
Examining and Implementing Power Reduction Opportunities
The Register Power Linter (REG) power linter PowerBot finds registers in the design and monitors the
inputs to see if certain toggles were unnecessary because the clock did not cycle. It also estimates
the amount of power lost due to the extraneous activity on the inputs.
Definition
If the input net to a register or a flip-flop toggles two or more times before the clock of the register
completes one cycle, the toggles on the inputs could all be wasted. This means that there is activity
that consumes power on the input of the register, but that activity is meaningless. The following
schematic shows a register that is clocked infrequently ('CLK') compared to the data changing at its
'D' input. The transitioning occurring on the 'D' input between the clocking of the register is considered
extraneous because power is wasted.
15.4.3.1. Implementation
The unused toggles on the register input can be desirable or undesirable. If it is undesirable, there
may be many ways of implementing a more efficient circuitry upstream from the register, which
reduces wasted activity of the register. This PowerBot is essentially an analysis tool that points out
the potential areas of concern. This analysis is very much design- and simulation-dependent. This
PowerBot monitors the input of the register only if the associated net is monitored by your simulator.
Inferred nets are not monitored for extraneous activity/wasted power.
You can specify a threshold for the REG linter to filter out candidates that do not have enough
wasted toggles.
The ratio (for inferred and instantiated clock gated registers) is cycle counts when clock is disabled
but data is toggling to cycle count when clock is disabled. If the ratio is lower than the specified
threshold, then the candidate register is not considered as a reduction opportunity.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
334 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Linter PowerBots
The default value of the variable is '0.05' and the valid range is '0.0' to '1.0'.
15.4.3.2. Usage
The REG PowerBot is enabled by default. Use the following command to disable it:
ReducePower -skip_reduction_list {reg}
To calculate the exclusive fan-in cone power of potential candidates, set the following variable to
'true':
pa_set reduction_calculate_register_fanin_cone_power <true | false>
You can view the 'Cone Power' and 'Start Points' (both of which are related to the fanin cone) of the
REG power linter candidates in the 'Linter Reductions' dialog of the PowerArtist GUI as shown
below:
You can control the performance impact by limiting the fan-in cone size by using the following
variable:
pa_set reduction_max_start_points <integer>
Feedback multiplexers are also analyzed by the REG power linter. The initial power and saved power
is higher for the REG power linter and lower for the MUX linter as the MUX opportunities are
changed to REG opportunities.
New columns are added in the 'Detail' tab of the 'Linter Reductions' dialog to report the 'wasted
timestamps' and the 'cycle' information:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 335
Examining and Implementing Power Reduction Opportunities
The Clock Enable Condition Linter (CEC) PowerBot detects clock gating situations where the data
input to the register is driven by a feedback mux. The goal is to determine situations where the mux
select line, which act as the clock gate enable signal, is not optimally designed. A simple example is
where the clock is enabled but that data input is not changing.
Definition
The following schematic shows a mux-flop feedback loop topology, which is a potential candidate
for clock gating. The power benefit of clock gating is only as good as the clock enable condition
(ENABLE). If the input 'D' does not cycle when the mux is enabled, the corresponding clock toggles
are extraneous, and therefore contribute to wasted power. If this topology is replaced with a gated
clock with the same enable condition, the wasted power remains the same.
15.4.4.1. Implementation
The unused clock toggles on the register clock pin can be desirable or undesirable. If they are
undesirable, there are ways of implementing more efficient circuitry that would reduce wasted
activity of the clock. For example, you can replace the topology in the previous schematic with a
gated clock such that the gated clock enable signal is in sync with the data activity of the register.
15.4.4.2. Usage
The CEC PowerBot is enabled by default. Use the following command to disable it:
ReducePower -skip_reduction_list {cec}
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
336 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Linter PowerBots
Memory Sleep Mode (MSM) linter, is a simulation based approach that leverages the available power
gating modes in on-chip memories, to detect the inactive and redundant periods of memory from
the simulation and suggest power savings by enabling different power gating modes.
MSM reports power penalty for entry and exit from the power gating modes, Light Sleep (LS), Deep
Sleep (DS) and Shut Down (SD). This includes setup and recovery time to enter and exit respectively
from the modes (each low-leakage mode has its own wake up overhead and leakage savings).
In this example:
• ''LS' corresponds to pin in the memory '.lib'. When active, memory goes into a low leakage
mode and there is no change in the output state.
• 'DS' corresponds to the pin in the memory '.lib'. When active, power to the periphery is
shut down and the contents are retained. But the outputs are pulled low.
• 'SD' corresponds to pin in the memory '.lib'. When active, power to both the periphery
and the core is shut down. The memory contents are not retained.
It is your responsibility to provide the correct sleep and power down pins. PowerArtist determines
their polarity automatically and handles them according to their priority.
15.4.5.2. Usage
The MSM PowerBot is enabled by default. Use one of the following methods to disable MSM for
specific blocks/instances:
SetSkipReduction -instance <> -reduction msm
or:
pa_set skip_reduction_list msm
The MSM PowerBot belongs to the 'memory' category of 'reduction classes'. If 'reduction_classes'
is defined and does not contain either 'all' or 'memory', MSM is disabled, as shown in the example:
pa_set reduction_classes {logic linters}
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 337
Examining and Implementing Power Reduction Opportunities
Macro Power Linter enables you to develop custom power linters for the macros in the design. A
macro can be any of the following:
Macro Power Linter allows you to specify the functionality of macros by defining functional modes
of the macro. Using this information, Macro Power Linter reports the redundant clock cycles and
redundant toggles in clock and non-clock pins in various functional modes of a macro.
Note: This implies a clean methodology for memory wrappers, in particular, as they have a clear and
consistent interface. Real memory instantiation can vary as it is typically target technology and compiler
dependent.
If you do not specify the output file name, by default the analysis output is saved as
'mpl.analysis.red'.
15.4.6.2. Usage
Macro Power Linter is enabled by default. Use the following command to disable it:
ReducePower -skip_reduction_list {mpl}
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
338 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction Technique Summary
The tool looks for maximum or ideal power savings. It selects the reduction technique with a
greater total of logic and clock power savings.
If ideal power savings is equal, the tool evaluates actual power saving including gate power
penalty. It selects the reduction technique with the highest value in actual power savings.
3. CGE Improvement
If ideal power and actual power savings are equal, the tool looks for higher CGE improvement.
The tool selects the reduction technique with maximum clock gating efficiency improvement.
4. Area Overhead
If ideal power savings, actual power savings, and CGE improvement are equal, the tool evaluates
area overhead. The tool selects the technique with minimal total area required to implement the
reduction.
The precedence rule helps filter all the powerboats including SODC, ODC, Prism, GMC, LER, LNR, STC,
SMW, LEC, DOI, CEC, MUX, REG, and MEM.
Note: GMC is considered overlapping when the memory instance and clock net are the same, as GMC
could be applied to the same memory instance with different clock nets.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 339
Examining and Implementing Power Reduction Opportunities
a. Reduction: ODC
Ideal Power Savings: -6.24298e-09, Actual Power Savings: -1.2769e-09, CGE Imp: 0, Area
overhead: 7.04.
b. Reduction: Prism
Ideal Power Savings: -1.08141e-08, Actual Power Savings: -5.80826e-09, CGE Imp: 0, Area
overhead: -1e+99.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
340 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction Technique Summary
a. Reduction: ODC
Ideal Power Savings: -6.24298e-09, Actual Power Savings: -1.2769e-09, CGE Imp: 0, Area
overhead: 7.04.
b. Reduction: Prism
Ideal Power Savings: -1.08141e-08, Actual Power Savings: -5.80826e-09, CGE Imp: 0, Area
overhead: -1e+99.
Based on the precedence rule, ODC is selected for both register instances due to higher numbers in
ideal power savings.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 341
Examining and Implementing Power Reduction Opportunities
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
342 of ANSYS, Inc. and its subsidiaries and affiliates.
Power Reduction Technique Summary
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 343
Examining and Implementing Power Reduction Opportunities
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
344 of ANSYS, Inc. and its subsidiaries and affiliates.
Running PowerArtist Clock PowerBots
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 345
Examining and Implementing Power Reduction Opportunities
1. You can take advantage of tools later in your design flow to automatically insert Integrated
Clock Gating (ICGC) cells.
2. You can provide these tools constraints indicating which registers to gate.
3. If your circuit is missing enable signals or has inefficient enable signals, PowerArtist can
recommend design modifications or automatically output new RTL that contains the
recommendations.
The recommended methodology to run PowerArtist to reduce your clock power is as follows:
a. Set 'gate_clock yes' using the 'SetClockNet' command for the appropriate nets in the clock
file.
b. Disable the Low-Activity Non-Enabled Register (LNR) (p. 279) PowerBot and run a reduction using
Prism (p. 298), Clock Enable Condition (CEC) Linter (p. 336), and other PowerBots.
2. Generate completely new 'enables' and leverage those throughout your design:
c. Run a reduction analysis using both Low-Activity Non-Enabled Register (LNR) (p. 279) and
Prism (p. 298) PowerBots.
3. Generate synthesis constraints to tell PowerCompiler™ the optimal registers to clock gate:
b. Run the Local Explicit Clock Enable (LEC) (p. 283) PowerBot.
c. Run the 'CreateGraph' command to generate a cumulative savings versus number of reductions
curve to determine which register should be gated.
Synthesis constraint generation is described in more detail in the next section titled 'Generating
Synthesis Constraints (p. 346)'.
In contrast, PowerArtist analyzes the power of your design (when you run the Local Explicit Clock Enable
(LEC) (p. 283) PowerBot) and determines the optimal registers to clock gate based on the activity files
you provide. PowerArtist then generates '-exclude' constraints to prevent PowerCompiler™ from
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
346 of ANSYS, Inc. and its subsidiaries and affiliates.
Generating Synthesis Constraints
gating the registers when there are little or no savings. To run this feature, apply the use model described
in the next section.
Use Model
To generate clock gating constraints, use the following flow:
1. Run power reduction with the Local Explicit Clock Enable (LEC) (p. 283) PowerBot. All clocks specified
in your clock file must have the 'SetClockNet -gate_clock false' option set. This is the default
setting for LEC to run on any clock.
When you run this PowerBot, PowerArtist identifies the registers that are likely to result in positive
savings if the register is clock gated. Before you decide to perform clock gating, you should consider
how clock gating impacts timing and physical design closure. If the savings is small, clock gating
may have a negative impact on the design as a whole. This can be an important consideration since
the bulk of the power savings from clock gating comes from a relatively small number of
opportunities. When LEC finishes running, you have a '.pdb' file that contains the reductions that
LEC considers to be worthwhile.
2. Run the 'CreateGraph' command to generate a '.ptcl' file that you can view using the Waveform
Viewer. This command has the following syntax:
CreateGraph -class clock
-power_db_name <filename>
[-graph_output_file <filename>]
[-graph_log <filename>]
[-graph_type power_savings]
Be sure to specify an output file name to make it easier to select in the Signal Viewer.
Note: You need to specify 'pa_shell' to start the shell and execute the 'CreateGraph' command.
Example
% pa_shell
pa_shell % CreateGraph -class clock -power_db_name my.pdb
-graph_output_file power_savings.ptcl
This command generates a PTCL file where the X-axis is the total number of reduction opportunities
and the Y-axis is the cumulative savings opportunity. The reduction opportunities are sorted so that
the opportunities that provide the highest savings are closest to the Y-axis. A typical graph quickly
rises and then asymptotically approach 100% of your total savings. You see quite often that 80% of
total savings are achieved in a small fraction of the total gating opportunities.
b. From the PowerArtist main menu, select Tools > Signal Viewer.
c. Delete the default '*.fsdb' in the file browser and replace with '*.ptcl' and click 'Enter'.
d. Select the '.ptcl' file you just created. The waveform loads automatically.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 347
Examining and Implementing Power Reduction Opportunities
4. Examine the graph and look for a good cut-off point where you think the additional clock gating
opportunities, while potentially saving power, are not worth the downstream design impacts. This
is typically at the 'knee of the curve'. The point on the Y-axis is the number you specify with the
'-constraints_savings' option of the 'WriteClockGatingConstraints' command.
In the sample waveform, the coordinates of the selected point are '14.0' and '618.517'. Therefore,
specify the 'WriteClockGatingConstraints -constraints_savings 618.517' command.
For complete descriptions of the options of this command, see the description in the 'PowerArtist
Reference Manual'.
Note: Whenever you run the 'ReducePower' command, reduction data is stored in a power database
(.pdb) file. This is the file you specify with the '-power_db_name' option.
When the 'WriteClockGatingConstraints' command runs, it creates a constraint file that can be
read by your synthesizer. For PowerCompiler™, the constraints are in the form of
'-exclude_instances' constraints to the 'set_clock_gating_registers' command.
• Example 1
WriteClockGatingConstraints -constraints_savings 30e-06
-power_db_name my.pdb -constraints_output_file my.con
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
348 of ANSYS, Inc. and its subsidiaries and affiliates.
Recommended Flow for Implementing Power Reductions
In this example, PowerArtist sorts the reduction opportunities from highest to lowest power
savings and selects 30 uW as the cut-off point. This means that once the constraints savings
value of 30 uW is reached, by the top X opportunities, all other opportunities are excluded
from the resulting constraint file. The power database to be analyzed is 'my.pdb' and the
constraints are output to the 'my.con' file.
• Example 2
WriteClockGatingConstraints -bus_naming_style %s_%d
-power_db_name my.pdb -constraints_output_file my.con
• Example 2: Output using specified bus naming style for maximum constraints savings
set_clock_gating_registers -exclude_instances { cnt3_reg_11 cnt3_reg_10 cnt3_reg_9
cnt3_reg_8 cnt3_reg_7 cnt3_reg_6 cnt3_reg_5 }
In the constraint file, you some constraints may be commented using the '#' character, as shown in
the next example.
The commented constraints are those registers that are below the '-min_bit_width'. PowerArtist
does not explicitly exclude these registers because a synthesis tool, with its better optimization, may
find them to be part of larger register bank and therefore may decide not to exclude them. If
PowerArtist excludes these registers, synthesis tools would never be able to include them. They are
present in the file only for reference. The 'uncommented' constraints are those that PowerArtist has
decided to exclude because they do not save power and their bit-width is above the
'-min_bit_width'.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 349
Examining and Implementing Power Reduction Opportunities
2. Perform vector analysis using PowerArtist on the available RTL simulation data and inspect the
activity profiles. You can use a scripted flow that includes the 'GenerateActivityWaveforms'
command.
3. Choose a set of vectors and intervals with a reasonable level of activity that is representative of
normal device operation.
The vectors you choose for power reduction analysis are different from those you choose to stress
test the power distribution network with voltage drop analysis. For the latter, you can choose to
maximize activity. If you use the same vectors for power reduction, then there are fewer opportunities
on which to apply the LNR PowerBot to registers with normally low activity. These high-activity
vectors can also cause existing 'clock enables' to always 'be enabled'. Therefore, propagating them
forward with Prism saves little power. If you choose a vector set with too little activity PowerArtist
might insert too many clock gating opportunities, which can cause physical layout problems for
clock networks at the P&R phase or can increase power consumption.
4. Run the 'ReducePower' command with the vector set (s) you chose.
You are likely run reduction more than once. On your initial run, enable all reductions. PowerArtist
attempts to select the power reductions that provide optimum power savings. For example, it
chooses the ODC over LNR. Also, by enabling all reductions you see the power savings that are likely
in memories and, potentially, any power you might be wasting (with the linter PowerBots) due to
inefficient clock enables. After you get a profile of the potential power savings from each reduction
class, you can re-run PowerArtist and disable reduction classes you do not want to consider.
5. When you are done with your reduction runs, inspect the '.rpt' file:
Is it about what you expected? If it's greater than 85%, the clock-based power savings are limited.
If the clock gating percentage is very high, it indicates that you can encounter problems with
clock tree synthesis and P&R so use PowerArtist to reduce the number of gated registers with
only a minimal impact on power savings. You should use the synthesis constraint generation
feature of the LEC PowerBot (see Step 3 in Running PowerArtist Clock PowerBots (p. 345)) to
specify registers that should not be clock gated by your synthesis tool.
b. Focus on the dynamic power savings in the core to see what is worth doing. If you look for the
total power savings, you can conclude that there is nothing worth doing because real power
savings are masked by high static power or high I/O power.
c. Note which reductions PowerArtist found and which of those were auto-accepted. If you see a
lot of savings in your memories, it might be best to redesign the memory architecture and usage
rather than rewriting the RTL.
6. If you want to control which reductions are rewritten, invoke the PowerArtist PowerCanvas and use
the reduction dialogs to reject or accept reductions for rewrite. You can easily do this by filtering
on specific reductions or modules. For details, see Filtering Reduction Results (p. 87) in the reduction
tutorial.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
350 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reduction Results
The effect of this option depends on the setting of the 'SetClockNet -gate_clock <true |
false>' command:
This behavior allows you to indicate that while synthesis-based clock gating is performed on the
net, reductions for that net are not 'automatically accepted' for rewrite.
Note: In the 'design.rpt' file, reductions that can be accepted for rewrite are marked as
'Potential' reductions. An example of a report of the LNR reduction technique is shown below:
Core Techniques Dynamic Saving Total Saving
---------------------------------------------------------------------
Low activity non-enabled register :
Auto-accepted (width <= 16bits) : 0W 0.00% 0W 0.00%
Potential : 18.8uW 89.77% 18.7uW 89.52%
If you specify a root clock with the '-reduction_dont_touch_clocks {}' option, then
the root clock and children clocks traceable from the root clock are not processed by PowerArtist.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 351
Examining and Implementing Power Reduction Opportunities
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
352 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reduction Results
• GMC and MEM reporting on the same memory instance are not considered overlapping
and therefore, the power saved by both these reduction techniques is added to the 'total
saved power'. GMC and MEM are not considered overlapping because GMC reports power
saved on memory clock pin and MEM reports power saved on data/address ports.
• A Prism candidate of 'easy' category has higher priority. This means that if an instance
is reported by Prism as 'easy' category, then the power saved from Prism is also (including
the other reduction techniques) added to the 'total saved power'.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 353
Examining and Implementing Power Reduction Opportunities
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
354 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reduction Results
Block Activity Ranking (BAR) analysis highlights redundant clock and data activity at the interfaces of
each user-defined block in a design. For each block containing sequential elements, the data includes
the activity metric for the clock signals. For each clock input, the associated data inputs (inputs that
drive sequential instances clocked by the clock input) and their activities are also listed. Asynchronous
reset inputs are not included in the report/s.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 355
Examining and Implementing Power Reduction Opportunities
top.core1.t1.dpmem,3,0.0091215,51.976,4.192e-06,1.4981,0.38417
top.core1.r1,2,0.0073569,41.921,2.0215e-05,1.9988,0.31935
top.core1.r1.dpmem,3,0.007311,41.659,3.2203e-06,1.1599,0.12807
<snip>
A well formatted text report is also generated. The reports consists of two sections:
– Summary
– Details
This section is in addition to the 'Summary' section. A sample output is shown below:
<snip>
2. Details
Level 1
clogic top.core1
• a measure of the static and dynamic clock gating efficiency in the design.
– Static clock gating efficiency is a vector-independent measure of the clock gating coverage
of the design.
– Dynamic clock gating efficiency is a vector-dependent measure of the clock gating
effectiveness of the design.
• information on the number of bits that will be clock gated by synthesis as well as additional
clock gating identified by the PowerArtist power reduction techniques.
The report further breaks down the clock gating information on a per-clock and per-hierarchical
instance basis.
With the report providing both a high-level and a detailed view of the clock gating status in the
design, you can quickly identify the right areas on which to focus your power reduction efforts.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
356 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reduction Results
The report has a header section and seven body sections. The header section includes information
such as the run date and program information (date and version). In addition, the header section
includes a Note section that defines some of the symbols and terms used in this report. It provides
information on how PowerArtist calculates certain values. A sample output is shown below:
POWER REDUCTION CLOCK GATING REPORT
===================================
<snip>
Note:
'-' : indicates unknown value
Enabled : Bits with a synchronous load-enable or a clock-enable
Inferred Clock Gating : Bits that synthesis will add clock gates for
<snip>
Clock Gating Enable Efficiency:(100 * ((data_toggle_cycles)/total_enabled_cycles))%
The top-level body sections in the clock gating report are described in the next sections.
• SetClockGatingStyle -min_bit_width
or
• ReducePower -reduction_max_bit_width
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 357
Examining and Implementing Power Reduction Opportunities
Clock gating efficiency is broken into static and dynamic values, which are calculated as follows:
Static Clock Gating Efficiency = (100 * (gated_flops/total_flops))%
Dynamic Clock Gating Efficiency = (100 * (gated_cycles/total_cycles))%
Clock Gating :
Inferred : 467 ( 67.39% ) 476 ( 68.69% ) ( 1.30% )
Instantiated : 0 ( 0.00% ) 0 ( 0.00% ) ( 0.00% )
Inferred and Instantiated : 0 ( 0.00% ) 0 ( 0.00% ) ( 0.00% )
None : 226 ( 32.61% ) 217 ( 31.31% ) ( 1.30% )
For example, in the tutorial, the static clock gating efficiency for flops before reduction was
approximately '67.39%' before reduction and '68.6%' after reduction, which is a '1.3%'
improvement.
The Clock Gating Efficiency (CGE) value for the design is computed and reported based on the total
flop count. In some cases, it was found that CGE values were reported lower than they were because
of their dependency on untraced flops in the design.
You can control the calculation method of CGE values. You can choose to compute CGE based on
all (traced and untraced) flops in the design or based only on the traced flops in the design. You
can enable this by using the following variable:
pa_set ignore_untraced_flops_cge <true | false>
The default value of the variable is 'false' (where CGE values are computed based on all flops in
the design). Setting it to 'true' enables CGE computation based only on traced flops.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
358 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reduction Results
-----------------------
Low activity non-enabled register :
Auto-accepted (width <= 16bits) : 9 1.30%
Potential : 78 11.26%
Low activity enabled register :
Auto-accepted (width <= 16bits) : 3 0.43%
Potential : 3 0.43%
Observability Don't Care :
Auto-accepted : 0 0.00%
Strengthened : 64 9.24%
Potential : 64 9.24%
Total latches : 0
Total inferred latches : 0 ( 0.00% )
Total instantiated latches : 0 ( 0.00% )
Clock Gating Efficiency :
Static : ( - )
Dynamic : ( - )
Data Aware : ( - )
Clock Gating :
Instantiated : 0 ( 0.00% )
None : 0 ( 0.00% )
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 359
Examining and Implementing Power Reduction Opportunities
Clock Gating :
Inferred : 376 ( 83.19% ) 385 ( 85.18% ) ( 1.99% )
Instantiated : 0 ( 0.00% ) 0 ( 0.00% ) ( 0.00% )
Inferred and Instantiated : 0 ( 0.00% ) 0 ( 0.00% ) ( 0.00% )
None : 76 ( 16.81% ) 67 ( 14.82% ) ( 1.99% )
Total latches : 0
Total inferred latches : 0 ( 0.00% )
Total instantiated latches : 0 ( 0.00% )
Clock Gating Efficiency :
Static : ( - )
Dynamic : ( - )
Data Aware : ( - )
Clock Gating :
Instantiated : 0 ( 0.00% )
None : 0 ( 0.00% )
<snip>
The Clock Gating by Instance reporting automatically detects latches that are intended in the design
for existing clock-gating. Such latches are not considered for any clock-gating or in clock gating
efficiency calculations.
This section also reports the flop power, flop activity, latch power, and latch activity metrics
per-hierarchical instance. It also reports the root clock for every flop and latch in the design. The
full instance path is used to report the hierarchical instance names. Finally, the clock gating efficiency
numbers for leaf level instances are also reported.
The report is sorted hierarchically in the descending order of clock gating inefficiency. The clock
gating inefficiency of an instance is calculated as:
(Total_Flops * (100 - DACGE))
For same value of inefficiency, the report is sorted in descending order of 'Total_Flops' and
'Total_Power'. If none of the sorting criteria holds, sorting is alphabetical.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
360 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reduction Results
<snip>
To report clock and data activity in terms of toggles, use the following command:
pa_set reduction_report_clock_gating_toggles true
You can also configure the setting using the ReducePower command as follows:
ReducePower -report_cg_toggles
This variable enhances the text report, reduce_power_cg.rpt, with toggle data recorded in
the Clock Gating by Instance - Summary section. The report contains clock, data in, and data
out activities in terms of toggle numbers.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 361
Examining and Implementing Power Reduction Opportunities
• the actual width and all output nets of an instantiated MBF flop.
• the enable expression besides clock and root clock name in section 5.1.
• the ECG enable expression for ECG registers, which are consistent with the ECG enable
expression reported in section 5.1.
• the wasted clock pin power for each row in section 5.1, which includes clock activity if gated
cycles are not detected.
Note: This based on the instance-based CGEE and the values can, therefore, differ from the
enable-based wasted clock pin power reported in section 6 (Clock Gating Enable Efficiency)
of this report.
• An asterix (*) is added to the DACGE numbers (CGEE and WCPP columns) if the following
variable is not specified or is set to 'false':
pa_set reduction_time_based_dacge true
Initial Final
Gating Technique Width Power Activity DCGE DACGE DCGE DACGE Flop Name(Clock, Root Clock)
----------------------------------------------------------------------------------------------
None 64 31.7uW 0.000 0.00 0.00 0.00 0.00 top.core1.<snip>.pci_clk)
None 64 91.8uW 0.163 0.00 8.15 0.00 8.15 top.core1.<snip>.pci_clk)
...
None 1 12.1nW 0.000 ZF ZF ZF ZF top.core1.<snip>top.tck)
None 1 12.1nW 0.000 ZF ZF ZF ZF top.core1.<snip>top.tck)
• 'U' is annotated for sequential elements/instances that could not be traced to a clock source,
and thereby not considered for inferred clock gating.
• '*' is annotated to clock/data I/O activities if they are not from simulation.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
362 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reduction Results
The section reports the Clock Gating Enable Efficiency (CGEE) metric. CGEE identifies and quantifies
the scenarios when the data is stable over a period of time and the flop is unnecessarily getting
clocked. The intent of this metric is to enable you to quickly identify and debug hierarchies/instances
that are not power-efficient by doing a cycle-by-cycle analysis of clock, data, and enable (if present).
• A low CGEE value for a flop signifies the clock is not well gated. A high CGEE value for a flop
signifies the clock is well gated.
• CGEE applies to both gated and ungated flops in the design. For an ungated flop, the enable
condition is assumed to be always enabled.
• CGEE is reported on a per enable basis and not per register instance basis. Registers that
share the same enable have the same CGEE values.
• CGEE is extended to both leaf-level clock gating enables and instantiated gating enables.
Registers that are driven by ICGCs having common enables will have the same CGEE values.
• CGEE does not consider enhanced clock gating enables. Instead, it uses the RTL enable. The
intent is to fix the RTL and not the implementation.
• The CGEE value for an ungated register is equal to its data activity, which is calculated after
removing the overlapping toggles of its bits.
• Flop outputs are monitored by delaying the calculations by one clock cycle. This helps in
cases where the flop inputs are from inferred logic and therefore, are not present in the
simulation activity.
• Activity-based calculations are not based on averaging activities (an 'n-bit' counter results
in 'n%' of activity). Instead, CGEE adds the activities of the bits and subtracts the overlapping
toggles.
• In addition to the CGEE metric, the report includes the wasted clock pin power. The wasted
clock pin power represents the switching power of the clock pin of the registers and does
not include any other clock network component.
• You can control the CGEE, DCGE, and DACGE value of zero frequency (ZF) registers for roll-up
calculations by using the following variable:
pa_set reduction_report_use_zf_in_cgee <true | false>
The default value of the variable is 'false'. This means that Zero Frequency (ZF) flops are
ignored from instance-based CGEE calculation. Zero Frequency (ZF) and Fully Gated (FG)
tags are added to ZF and FG flops in the 'Clock Gating Details for Flops' section so they can
be identified as excluded from the calculation. Setting the variable to 'true' ensures that
the following happen for Zero frequency (ZF) flops:
– 100% CGEE is used in instance-based CGEE, DCGE, DACGE calculation.
– The report shows the actual DCGE, CGEE, and DACGE values.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 363
Examining and Implementing Power Reduction Opportunities
The CGEE section of the report contains the following information also:
This is the enable signal or function within the instance hierarchy and it is reported for both
gated and ungated flops (inferred and instantiated).
• Calculation type
– Cycle-based:
CGEE is cycle-based when both the enable and flop output are present in the
simulation activity.
– Activity-based:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
364 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reduction Results
In addition to the CGEE metric, 'ReducePower' also reports the wasted clock pin power. The wasted
clock pin power represents the switching power of the clock pin of the registers and does not
include any other clock network component.
This section reports clocking efficiency per level of clock hierarchy. The clock nets are arranged in
the form of a hierarchy starting from the root. The clocking efficiency and switching activity
distribution of data is reported at every hierarchical clock element level. There are two sub-sections:
• Clock Hierarchy Summary that reports data by clock by clock hierarchy level
• Leaf Level Clock Details that reports data by flop by clock. The flops in this section are sorted
in the descending order of clocking inefficiency.
This section enables effective clock power debug by identifying the least powerefficient clocking.
You can generate this section by using the following variable:
pa_set reduction_report_hierarchical_clock_efficiency true
Note: (U) : Sequential elements or clocks not traced as part of a clock domain
Bus Activity : Activity of bits as a group
Clock Activity : Gated activity of clock to the group of bits
Downstream Clock Power: Downstream dynamic clock power (including clock pin power)
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 365
Examining and Implementing Power Reduction Opportunities
Notes:
• The column 'Downstream Clock Power' reports the clock power consumed by clock buffers,
clock gates, and flop clock pins, downstream to a clock net or a clock gate in the clock tree.
This enables you to identify clock gaters controlling large clock tree power and optimize
their enables to reduce clock power.
• The formula to calculate the downstream clock power includes clock net power, clock gate,
and inferred clock buffer power. It is calculated as the sum of the following:
sum (power of (combinational or sequential) elements from the node to clock pin) +
sum (pin power of each clock pin it is driving) + clock net power +
sum (power of all clock gates driven by clock) +
sum (power of all inferred buffers in the clock tree)
This ensures that the clock power reported in the average power report matches the
downstream clock power reported in this section.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
366 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reduction Results
The recommended approach is to identify the power inefficient block first and then move to the next
level of abstraction to debug the efficiency.
Power reduction has the capability to report efficiency at the clock hierarchy level. Based on the
derivation, the clock nets are arranged in the form of a hierarchy starting from the root. The efficiency
and switching activity distribution of its data is reported at every level. You can generate the report
by using the following variable:
pa_set reduction_report_hierarchical_clock_efficiency true
The report contains all access information collected during reduction-focused activity analysis, and
is generated as a '.csv' file. Memory access analysis and report generation depend on the following
inputs:
• The activity information at memory inputs, which is available in '.vcd'/'.fsdb' file or the
emulator stream.
• The technology libraries with sufficient energy arc information.
• Any additional port descriptions for memory macros specified through 'DefineMemory'
commands.
Note: The PowerArtist GUI also reports redundant memory accesses but they are a smaller subset as
they are filtered based on power savings. If PowerArtist is unable to figure out a way to reduce
redundant activity on a memory port and save power, then the data for that port is not displayed in
the GUI.
To generate the memory access report, use one of the following sets of commands:
or
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 367
Examining and Implementing Power Reduction Opportunities
The following table explains the information in the columns in the report (from left to right):
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
368 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reduction Results
CSV Report
The report has three sections, and they are described below:
• Summary
This section summarizes the wasted power of the pins/buses due to wasted toggles for each
memory instance in the design and includes the following columns:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 369
Examining and Implementing Power Reduction Opportunities
• Detailed
This section lists the individual pins/buses and includes the following columns:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
370 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reduction Results
• Wasted timestamps
This section reports the timestamps at which the toggles of a particular pin/bus were wasted.
A sample of this section is shown below:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 371
Examining and Implementing Power Reduction Opportunities
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
372 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reduction Results
15.9.8.1. Syntax
Usage: get_reductions [options] [{*}]
where:
[-filter <expression>] Filters the container with expression
[-debug] Emit debug messages for this command
[-quiet] Emit no messages for this command
[-help] Emit this help text
Returns:
container
Example:
get_reductions -filter {reduction_type == GMC}
get_reductions -filter {auto_accepted == true}
15.9.8.2. Examples
• Example 1:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 373
Examining and Implementing Power Reduction Opportunities
• Example 2:
Use the '-filter' option of the 'get_reductions' command, to get the desired reduction objects:
Similarly, you can apply other filters to any property listed in the table above.
• Example 3:
Use the '-class' option of the 'get_property_list' command, to get a list of reduction properties:
pa_shell> get_property_list -class reduction
• enable_logic_depth
• enable_expr_literal_count
These properties are defined for reduction techniques ODC, SODC, and GMC and can help perform
trade-off between power saving and area/timing while implementing the suggested reductions.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
374 of ANSYS, Inc. and its subsidiaries and affiliates.
Fine-Grain Switch Cell Support
These properties are also supported in the 'Unified', 'Simple', and 'By-Enable' reduction dialogs of
the GUI.
Example
Suppose enable expression suggested by a reduction technique is:
(A & B * C) | (D & B | C | E)
In this example, the 'Enable Logic Depth' is '4' and the 'Enable Expr Literal Count' is '5':
foreach_in_container red [get_reductions -filter {reduction_type == GMC} {*}]
{
set enable_depth [get_property $red enable_logic_depth]
puts "Enable Logic Depth = $enable_depth"
set enable_expr_literal_count [get_property $red enable_expr_literal_count]
puts "Enable Expr Literal Count = $enable_expr_literal_count"
}
To perform parallel reduction-focused activity analysis as a separate step from power reduction, use
the following commands:
ConfigueParallelAnalysis -processes <number_of_processes>
GenerateGAF -gaf_enable_reduction_data true
ReducePower -use_existing_gaf true
You can refer to the PowerArtist Reference Manual for complete details of the 'ConfigureParallelAnalysis'
command.
Note: Parallel activity processing supports all reduction techniques except 'Split Memory Words (SMW)',
'Memory Power Linter (MEM)', 'Memory Sleep Mode (MSM)', and 'Macro Power Linter (MPL)'.
Estimated power savings may also change depending on the changed memory access cycle counts in
the various modes (read, write, read+write) of such memories.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 375
Examining and Implementing Power Reduction Opportunities
This support is available in the Gate Memory Clock (GMC), Memory Power Linter (MEM), and Memory
Sleep Mode Linter (MSM) PowerBots.
PowerArtist lists all the instantiated fine-grain memory cells processed in the reduction flow through
Note WBT-60. It also reports the respective 'Switch Functions'.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
376 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 16: Using the PowerCanvas
16.1. Introduction
This chapter provides an overview of how to use the PowerArtist graphical user interface, called the
PowerCanvas. It describes the available menu items and how to use them. It does not take you through
a process step-by-step. For details on starting PowerCanvas, see Invoking the GUI (p. 16) and Viewing
Power Analysis Results in the PowerArtist Graphical Interface (p. 47).
Refer to this chapter if there is a particular aspect of PowerCanvas that is not covered in the tutorial or
to know how a particular menu works.
Chapter Organization
The following topics are covered in this chapter:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 377
Using the PowerCanvas
Note: If you are loading a large design that may take some time, PowerArtist displays an hour glass
busy indicator. When your design is loaded, the display looks like the following figure:
• Hierarchy Browser
You can use the 'Design' menu to change the look of the hierarchy browser. For more information
on the using the hierarchy browser, see Using the Hierarchy Browser (p. 393).
• Schematic Display
You can use the 'Schematic' menu to change the look of the schematic display. For details on
using the schematic display, see Using the Schematic Viewer (p. 396).
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
378 of ANSYS, Inc. and its subsidiaries and affiliates.
PowerCanvas Menus
Note: Some menus are enabled only when certain conditions exist. For example, the 'Design' and
'Schematic' menus are available only if an inferenced design is loaded.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 379
Using the PowerCanvas
• 'Find...', which brings up the Find dialog. For detailed information on this dialog, see Using
the Find Dialog (p. 383).
• 'Preferences...', which brings up the Preferences dialog. For detailed information on this
dialog, see Using the Preferences Dialog (p. 386).
• 'Net Activity...', which supports the what-if power analysis flow. For detailed information on
this dialog, see Using the Net Activity Dialog (p. 391).
• 'Waveform Viewer...', which enables you to view output from PowerArtist or from external
sources. For information on how to use the viewer, see Using the Waveform Viewer (p. 429).
• 'Signal Viewer...', which is a faster and an alternate waveform display tool. For information
on how to use the viewer, see Using the Signal Viewer (p. 441).
• 'Command Window...'.
Four of these control the display of paned windows: Schematic Legend, Hierarchy, Information,
and Schematic.
The last three items are used for viewing and manipulating power reduction analysis results. They
appear only after a power reduction analysis is complete and the power database is loaded. These
items are:
• All Power Reductions: For information on how to use the viewer, see Using the All Reductions
Dialog (p. 404).
• Power Reductions By Category: For information on how to use the viewer, see Using the
Waveform Viewer (p. 429).
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
380 of ANSYS, Inc. and its subsidiaries and affiliates.
PowerCanvas Menus
• Power Reductions By Enable: For information on how to use the viewer, see Viewing
Reductions by Clock Enables (p. 427).
If you select Help > Shortcut Bindings, PowerArtist displays the following dialog, which describes
various hot keys and their operations.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 381
Using the PowerCanvas
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
382 of ANSYS, Inc. and its subsidiaries and affiliates.
PowerCanvas Dialogs
You can display hierarchical paths using '/' separators instead of '.'. This enables designers to easily
copy and paste paths between APSH and GUI.
Note: You can also use the 'Ctrl+F' shortcut keys to launch the dialog.
This dialog allows you to search the power database for information relating to instances, pins, or
nets. You control your search choice in the following steps:
2. Enter the search criteria, controlling how many criteria must be met using the '+' (add another
criteria to the list), '-' (delete the last criteria from the list), or 'Clear' (clear the entire list).
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 383
Using the PowerCanvas
• If you choose nets, you can search by hierarchical name, name, average activity,
capacitance, duty cycle, and frequency.
Note: The search button changes to a 'Stop' button while the search is working. To stop
the search at any time, click 'Stop'.
This sample search, which uses the power database from the average power analysis tutorial,
finds all hierarchical names (including inferred instances) that begin with 'u' or 'U' with dynamic
power greater than '7e-04W' or '.7mW'. In this example, the search criteria matched 3
elements.
The first time you search the Instance, Net, or Pin category you may see a 'busy indicator'
because 'Find' does not know how many items are in the design.
After the first search, you get a progress meter that indicates the percentage completion of
the search (if the search goes on for more than several seconds).
You can click any column (p. 386) header in the table of returned elements to sort the elements
by either increasing or decreasing order according to that criteria. The first time you select
a header, you get an arrow showing the direction of the sort. The second time you select the
header inverts the sort.
You can view the source, the schematic entry, or the hierarchy browser entry for each element.
You must select the element in the returned list and then click 'Show in Source' to see the
corresponding source.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
384 of ANSYS, Inc. and its subsidiaries and affiliates.
PowerCanvas Dialogs
Types of Search
The following types of search are supported:
• Name-based
For name-based searches, do not specify any wild card characters. You can type in any part
of the name and the find dialog returns all names that contain that string. You can then ask
for either a match ('==') or not a match ('!='). The name-based entries are case-insensitive.
When using this dialog, it is important that you understand the difference between a 'hierarchical
name' and a 'name'. A hierarchical name is the full hierarchical path name where levels of
hierarchy are separated by '/' or dot (.). The name is the portion of the name after the last
dot. Consider the following example of strings in your design:
a.b.c
a.bc
abc
A 'name' search using 'b' as the search string returns 'a.bc' and 'abc'. It does not match
'a.b.c' because in this example 'c' is the name, which does not match the pattern 'b' (0 or
more name elements followed by a 'b' followed by 0 or more name elements). However, a
'hierarchical name' search using 'b' returns all three because 'a.b.c' matches the given
pattern.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 385
Using the PowerCanvas
• Numeric Values
When you are searching for numeric values, the values are all floating point numbers but are
displayed using scientific notation. You will use the standard relational operators (<, <=, ==,
>=, >) to control your search.
If you do not specify a unit when searching for a numeric value, 'Watts (W)' is assumed.
You can specify W (default) mW, uW, or nW.
• Clock Gating
You can search for instances by their clock gating type. If you select 'Instance' and 'Clock Gating',
then you can search for instances that match (or don't match) any of the following types:
None, Inferred, Instantiated, Inferred and Instantiated, and Register
Bank.
• Optimized Width: Use to report the number of bits of an instance that are optimized during
power analysis ('CalculatePower').
• Clock Gating Efficiency (CGE) Metrics: Use for sorting and filtering results.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
386 of ANSYS, Inc. and its subsidiaries and affiliates.
PowerCanvas Dialogs
You can also use the Ctrl+P shortcut to launch the dialog.
• General
You can use this section of the dialog to perform the following activities:
– Specify whether the register clock pin power is associated with a register or with the
clock tree. All power displays (except the reduction dialogs) respond to this preference.
– Display all values in the tool in scientific notation via the check box.
– Select the precision via the spin box.
– Specify the file comparison utility using the 'File Comparison Command:' field. tkdiff'
is default utility for file comparison.
– Specify the file editor using the 'File Edit Command:' field. 'vi' (or the value in the
'$EDITOR' environment variable) is default file editor.
– Configure the color themes as Classic, Dark, or Light. By default, the theme is Classic.
You can also set the value of your choice through these fields. Once set, the value persists for
subsequent invocations of PowerArtist.
• Font
You can select the font to use for the tool or the log output:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 387
Using the PowerCanvas
• Schematic
The default is 'Primary IOs', which displays the top-level ports in the currently open
power database. Setting it to 'Nothing', signifies that the initial display of the schematic
does not contain any graphics and elements must be added to the schematic using the
'show in schematic' menu from the other parts of the GUI.
2. Mouse Behaviour: To navigate the Schematic Viewer, you can configure one of the two
mouse behaviors available in the tool - Classic and Ansys.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
388 of ANSYS, Inc. and its subsidiaries and affiliates.
PowerCanvas Dialogs
The Shortcut bindings table shows an asterisk mark against the keys which are always
active in the Ansys mode.
Pan Cursor: You can use the middle mouse button to perform the pan operation. The
cursor icon changes into a hand-palm icon. The following pan controls are available:
– Pan Schematic: To pan around the whole design, click the middle mouse button and
drag the mouse in any direction.
– Pan Model: To move the schematic model in any direction, click Ctrl + middle mouse
button.
Zoom Cursor: To see the zoom cursor, click the Shift + middle mouse button. The cursor
icon changes into a magnifying glass icon. The following specifies the direction:
– Zoom In: If the direction of the cursor movement is upwards, zooms in.
– Zoom Out: If the direction of the cursor movement is downwards, zooms out.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 389
Using the PowerCanvas
This dialog displays the properties (power values, frequency, transition times, average, activity, duty
cycle, wire capacitance, etc.) for nets, pins, or instances in the design. You can do the following with
this dialog:
• Select nets, pins, or instances from the Schematic or the Hierarchy Browser.
• Add tabs that allow you to save data for items you have selected and then toggle between them.
There is no limit on the number of tabs you can create. You can use the and icons to add or
remove tabs, respectively. You can also right-click the dialog title to open a menu of tab actions.
This menu has three items: New Tab, Close Tab, and Close Other Tabs.
• Suppress (hide) or change any column by right-clicking the column header and disabling/enabling
the columns from the menu that appears. To reorder the columns, click and drag the column
headers.
2. Right-click a net/pin name and select 'Show Waveform' from the menu.
For details, see section Using the Waveform Viewer (p. 429).
• Select multiple elements to display in the same tab. The following figure has three tabs, one for
each element type:
Figure 16.8: Properties Dialog with Multiple Tabs and Instances Displayed
Each tab represents an element as indicated by the different icons in the tab headings:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
390 of ANSYS, Inc. and its subsidiaries and affiliates.
PowerCanvas Dialogs
You can display multiple elements (nets, pins, or instances) of the same type using the 'Ctrl-select'
keys in a single tab. But you cannot display elements of different types in the same tab.
• Display the pins for any listed instance by right-clicking any row and selecting 'Show Instance
Pins'. If the tab is already showing the pins, you can right- click and select 'Don't Show Instance
Pins' to view the information for the parent instances only. If you check the 'Expand instances to
pins by default' box, the pins display whenever you select an instance.
• Display the upstream, downstream, or exclusive cones of logic for an instance pin by selecting the
appropriate entry from the right-click menu. The following figure shows the downstream cone of
logic for the 'Y' output pin on instance 'udi18':
Figure 16.9: Displaying the Downstream Cone of Logic for an Output Pin
The expressions shown in the 'Properties' dialog can be expanded to their user-defined nets. To
expand, right-click and select 'Expand All'. To collapse all expressions, right-click and select 'Collapse
All'.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 391
Using the PowerCanvas
The 'Net Activity' dialog supports the what-if power analysis flow. You can launch the dialog in one
of the following ways:
The main area of the dialog is a table with the following columns:
Column Function
Name
Net Displays the full net path.
Export This is a check box and it allows you to determine the nets exported to the
'SetStimulus' file. You can change the what-if scenarios easily without to
deleting/adding nets in the dialog.
Activity This is the net activity. When you add a net, this value initializes to the activity
stored in the power database (PDB).
Duty This is the net duty. When you add a net, this value initializes to the duty
stored in the power database (PDB).
After the 'Net Activity' dialog is visible, you can also add nets to it by dragging from the 'Find' or the
'Properties' dialogs, or from the 'Schematic'. You can change the activity or duty of nets in the dialog
by first selecting the value with the mouse, then clicking again. The field changes to a type-in where
you can type in the new value. You can edit multiple entries at once by doing a multiple selection.
Make sure you hold the shift key down for the second click to launch the field editor.
You can perform a what-if power analysis by doing the following steps:
2. Export the data in 'SetStimulus' format by selecting 'File > Export > SetStimulus Format...'.
You can also export the data as a CSV file by selecting 'File > Export > CSV Format...'.
The data in the dialog is saved automatically when you close PowerArtist or you can save it anytime
by selecting 'File > Save'. Previously saved data is automatically loaded when you launch the
PowerArtist GUI on the same pdb and re-open the 'Net Activity' dialog. If the pdb you load into
PowerArtist does not have net activity data but you know that relevant data is stored elsewhere you
can load it from a different pdb by selecting 'File > Load...'.
Note: The data is always saved and associated with the current pdb.
• The 'Filter' text box enables you to display nets filtered according to the string you type.
• The table context menu provides the following capabilities:
– 'Copy' menu items to copy values and nets.
– 'Remove All Nets' to remove all entries from the dialog.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
392 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Hierarchy Browser
• Hierarchy
It is the left pane of the figure shown above. You can use the button ( which by default shows
'Power') at the top right of the hierarchy view to sort the data. You can sort by 'Power', 'Power
Density', 'Instance', 'Module', or 'Area'.
• Power Table
It is the right pane of the figure shown above. It displays inferred instances, registers, and gates
that are within the hierarchical instance (module) that is highlighted in the hierarchy view in the
left pane.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 393
Using the PowerCanvas
• Hierarchy
For the highlighted module/instance, you can perform the following actions:
– Show in Source
Opens the smart 'Source Browser' on the source file containing the selected element. The
browser is positioned at the source line and colorized for power based on the
module/instance from which you cross-probed. For more information on using the smart
'Source Browser', see Using the Source Browser (p. 449).
– Show in Schematic
Displays the selected instance in the schematic. You can then zoom-in to get a closer look.
For more information see, Using the Schematic Viewer (p. 396).
– Show Properties
Displays the selection in the Properties dialog. For more information, see Using the Properties
Dialog (p. 390).
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
394 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Hierarchy Browser
• Power Table
For the selected instance, you can perform many of the same actions listed in the 'Hierarchy'
sub-menu and the following actions that apply only to selections in the power table (or apply
differently to them):
– Copy
– Copy Special
– Copy Path
– Export...: Exports data from the power table to a CSV file so that you can manipulate it in
a spreadsheet (such as MS-Excel). This is similar to the 'export' capability in other dialogs.
– Show Downstream Cones: Displays the downstream cone of logic in the schematic for the
selected inferred instance in the power table.
– Show Upstream Cones: Displays the upstream cones of logic in the schematic for the
selected inferred instance in the power table. For upstream cones, you have the following
additional display choice. You can choose to ignore or show cones of logic for upstream
select signals for 2-1 muxes, unencoded muxes, and tri-states, by selecting Ignore Select
Cones/Show Select Cones.
– You can also choose to hide the following elements in the power table by checking the
following options:
Hide Gates
Hide Inferred Instances
Hide Registers
Hide IO Pads
• *Instance: This is the name of the instance inferred from the RTL.
• Logic Stat: This is the total leakage power of the logic and inferred buffers.
• Logic Dyn: This is the total dynamic power of the logic (internal plus net power) and inferred
buffers.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 395
Using the PowerCanvas
• *Logic Total: This is the sum of the leakage and dynamic power of the logic. The latter includes
internal plus net power and inferred buffers.
• Clk Stat: This is the total leakage power of the clock tree enclosed by a hierarchical instance.
• Clk Dyn: This is the total dynamic power of the clock tree enclosed by a hierarchical instance.
• *Clk Total: This is the sum of the leakage and dynamic power of the clock tree enclosed by a
hierarchical instance.
• Total Stat: This is the sum of the logic and clock tree leakage power.
• Total Dyn: This is the sum of the logic and clock tree dynamic power.
• *Total Pwr: This is the sum of the logic and clock tree power.
• *Pwr Density: This is the total instance power divided by the instance area.
• *Optimized: Indicates whether the instance can be optimized away. For example, if it has no fanout
the instance is optimized.
Note on Logic Instance Values: If the instance power under Logic Stat, Logic Dyn, or Logic Total
is zero, it may be because it forms part of a clock tree. If so, its power is included there.
Note Clock Instance Values: If a leaf instance power value under Clk Stat, Clk Dyn, or Clk Total
is non-zero value, it is because it forms a part of a clock tree. Therefore, its logic power is included
here.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
396 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Schematic Viewer
The 'Schematic' menu offers several options that you can use to manipulate the schematic. This menu
has the following options/sub-menus:
• Colorize By:
• Show Properties
Brings up the 'Properties' dialog. This dialog displays information on pins, nets, and instances
selected from the schematic. This is especially useful to see all instances connected to a particular
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 397
Using the PowerCanvas
bus port. Multiple selections show as many of the selected items as possible, even if they have
different parents. You can save selection information by creating a tab. For more information on
how to use this dialog, see Using the Properties Dialog (p. 390) and Viewing Power Analysis Results
in the PowerArtist Graphical Interface (p. 47).
• Copy Path
• Redraw
These menus enable better identification of schematic elements. If there is an element in the design,
that you are unable to view in the schematic, you can use either of these menus and it becomes
visible.
• Views
Views can be saved and restored by name. This menu has the following sub-menus:
– Save...
Displays a dialog that allows you to specify a name for the view.
Similarly, clicking 'Schematic > Views > <view name> restores the saved view. Views are
automatically mapped to the function keys 'F1' to 'F12'. As you save a view, a function key
is automatically assigned to the saved view. You can use these function keys to restore saved
views.
When you exit the GUI, the last schematic view is saved as the 'Last' view, if a function key
is still available. You can restore this view automatically, the next time you launch the GUI,
by specifying the following command:
PowerArtist -last_view true
– Organize...
Use this dialog to move views up or down the function key order or delete saved views.
• Instance
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
398 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Schematic Viewer
• Pin
This menu affects any pin selected in the schematic and has the following sub-menus:
– Expand Drivers/Loads: Expands the drives/loads for the selected instance pin/port.
– Collapse Driver/Loads: Removes the drives/loads for the selected instance pin/port.
– Show Clock Tree: Displays the clock trees for the selected pin. For details, see Basic Clock
Tree Manipulation (p. 402).
– Show Downstream Cone: When selected for an output pin of an instance, it generates a
schematic of the downstream cone of logic for that pin. It stops tracing at register boundaries
or primary IOs.
– Show Upstream Cone: When selected for an input pin of an instance, it generates a
schematic of the upstream cone of logic for that pin. It stops tracing at register boundaries
or primary IOs. You can choose to 'Ignore Select Cones/Show Select Cones'. This option
'ignores/shows' cones of logic for upstream select signals.
– Show Exclusive Cone: When selected for an input or output pin of an instance, it generates
a schematic for the exclusive cone of logic for that pin. You can choose to 'Ignore Select
Cones/Show Select Cones'. This option 'ignores/shows' exclusive cones of logic for select
signals.
• Net
• Bundle/Un-Bundle Net
– The schematic view bundles nets together to de-clutter the display. This makes it difficult to
initiate tracing on a scalar portion of that net bundle. The 'Schematic > Un-Bundle Net' menu
enables exploding this net into its bits for further tracing and viewing property details.
– If a net is un-bundled, it must be re-bundled before another net can be un-bundled. The menu
name changes from 'Un-Bundle Net' (when a net is not bundled) to 'Re-Bundle Net'.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 399
Using the PowerCanvas
Generates a full hierarchical schematic for your entire design. Before you select this command,
consider the potential time this can take due to the size of the schematic that it generates. When
you do select this, the following progress meter appears:
This gives you an idea of how long it takes to display the full design. If you decide you no longer
want to display the full schematic, click the 'stop' button.
Clears the schematic view and takes you back to the original schematic, which consists of the
primary inputs and outputs.
When selected, this toggle suppresses the display of unconnected pins for any subsequent schematic
display. This feature is most useful when showing cones of logic as it does not display any pins
that are not associated with the cone.
• When Tracing
Note: You can also select these items by right-clicking the schematic.
• To the NorthEast (up and to the right): this zooms out by a factor that is proportional to the angle
as well as the length of the stroke. You see an annotation 'zoom <value>' on the display.
• To the SouthEast (down and to the right): this does a window zoom where the first point is the
upper left bounding box point and the second point is the lower right bounding box. You see the
annotation 'zoom in' on the display.
• To the SouthWest (down and off to the left): this does a zoom fit. You see the annotation 'zoom
fit' on the display.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
400 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Schematic Viewer
'Show in Schematic'. This displays the schematic symbol body in the schematic with input ports
listed on the left side and output ports on the right side, as shown in the following figure.
Double-clicking this element in the schematic while holding the shift key down expands the body
into its equivalent schematic. You can then do a 'Zoom Fit' and see the following figure.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 401
Using the PowerCanvas
If you have run power analysis, you can quickly find the nets with high activity because they are a
non-blue color. Other elements are displayed in different shades of the thermal spectrum indicating
that some of their powers are higher than others. To see how a port of this module is connected to
other modules, double-click the port.
3. Perform the power analysis (you cannot view clock trees after elaboration).
After performing these requisite steps, you can use the following process to display a clock tree:
1. From the schematic display, select and highlight one of three elements to display a clock
tree:
• The clock pin of an inferred register.
• The clock pin of an instantiated gate-level instance.
• The clock net defined using the 'SetClockNet' command.
2. If you select a pin, right-click and select 'Pin > Show Clock Tree'.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
402 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Schematic Viewer
This creates a new schematic window of either the inferred clock tree for the selected element
or the traced clock tree. If you select a pin, you get the cone of logic that leads to that
particular clock pin. If you select the clock net, the entire clock tree is generated in a new
clock schematic.
Note: You cannot use the standard 'less' and 'more' schematic techniques (described previously) to
see less or more of your clock tree. You can only traverse the clock distribution network in this view.
For example, you do not have access to enable pins of integrated clock gating cells.
The following figure shows a clock tree for inferred register 'core1.s1.rxwrd.clock[0]'.
• ODC Candidate
• Steering Logic
• Delay Flops
The following legend shows the color coding for the elements:
There is a threshold to limit the number of elements shown in the 'Schematic Viewer' while viewing
ODC candidates.
• If the number of elements in the cone is 'below' this threshold, then all the elements in the
downstream cone are shown and the ODC elements are highlighted as per the legend. Non-ODC
elements are grayed out:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 403
Using the PowerCanvas
• If the number of elements in the cone 'exceeds' this threshold, only the ODC elements in the
downstream cone are shown and the ODC elements are highlighted as per the legend:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
404 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the All Reductions Dialog
This dialog allows you to apply sorting and filtering on all reductions and linters at the same time and
enables you to locate the reduction that provides the most power saving across Prism, Simple, and
Linter reductions. The separate reduction dialogs are available through main window menu item 'View
> Power Reduction By Category'.
• Type: The type of reduction. You can expand this item to show all instances of this type across
all instantiations of the parent module (shown in the 'Module' column).
• Label: A label is assigned to the same reduction opportunities across all instantiations of a
module. The label is not persistent across invocations of PowerArtist and is just used to identify
different reductions. The prefixes 'L-' and 'R-' identify the item as a Linter or a Reduction
respectively.
• Tag: This is an ID for a reduction provided by the engine.
• Module: This is the parent module for the reduction opportunity.
• En Depth: Displays the enable logic depth.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 405
Using the PowerCanvas
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
406 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reductions by Category
To view the results of the GMC, LNR, LEC, ODC, and DOI PowerBots, bring up the Simple Reduction
dialog by selecting View > Power Reduction By Category > Simple Reductions.... The Simple
Reductions dialog appears as shown in the following figure:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 407
Using the PowerCanvas
• Reduction: The type of reductions discovered in the given module. The line number of the
RTL where the reduction is found is also listed in this column. The name of the
variable/instance associated with the reduction is listed in this column at the lowest level.
• Total Power: The total of the logic and clock power of the RTL before any reduction takes
place.
• Logic Power: This is all the power that is not clock power. This includes combinational logic,
sequential logic (latches and register), and instantiated library elements.
• Clock Power: The power not including logic power. This is the power of your clock
distribution network including any inferred buffers, inferred integrated clock gating cells,
and any traced elements in your clock network.
• Saved Total: The total of the logic and clock power saved after all reductions (or the specific
reduction) are applied.
• Saved Logic: The power of the RTL logic that is saved per module or reduction.
• Saved Clock: The clock power that is saved after the reduction(s) are applied.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
408 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reductions by Category
• Saved Clock Pin: The power savings from the clock pin, due to named reduction techniques.
The values in this column are different from the values in the 'Saved Logic' column.
• Pcnt Saved: The total of the logic and clock power saved as a percentage of the total
top-level power.
• Ideal Saved Logic: The power of the RTL logic saved after the reductions are applied but
before subtracting the logic power required to implement the reduction.
• Ideal Saved Clock: The clock power that is saved after the reductions are applied but before
subtracting the clock power required to implement the reduction.
• CGE Imp: The clock gating efficiency (CGE) improvement percentage, which is the CGE value
after reduction minus the CGE before reduction. This value is displayed for clock-based
reductions (LEC, LNR, and ODC) only. The CGE for each instance of a register is displayed
(see the blue text) and the 'Line' row displays the average of all its children.
• Bits: The bit-width of the register. For ODC/SODC candidates, the 'actual' bit-width is reported
after '/'.
• AA: The AA (auto-accepted) column indicates whether or not the reduction was automatically
accepted for rewrite. If a reduction is not auto-accepted, you can hover your mouse over
the word 'No' to see the tool tip that tells you why the reduction was not auto-accepted.
Note: You can also filter on what is automatically accepted. In the Simple Reductions dialog,
the PowerBots that can be auto-accepted are: GMC, LNR and ODC.
• Accept: Ticking this check box causes reductions that can be automatically rewritten to be
scheduled (when 'Automatic' is selected from the pull-down menu) and adds the power
saved by any accepted reduction to the power summary table.
• Rewrite: The word 'Scheduled' appears in this column when a reduction opportunity is
accepted for 'Automatic' rewrite.
• Auto Size Column: Extends the selected column to allow you to see the entire contents of
the column for all displayed reductions.
Note: A '...' in any column indicates that there is text that is not displayed. To see the
text, you can auto-size the column.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 409
Using the PowerCanvas
• Auto Size All Columns: Extends all displayed columns to their full width or the maximum
width set in the 'Column Width' dialog for that column.
• Column Width: When you select this, you see the following dialog:
In the input field, enter a specific width (in characters) and click 'OK'. The column from which
you invoked this dialog adjusts to the specified width.
If you specify a column width and check the 'Set value as maximum auto-fit width' box, the
specified value becomes the maximum width to which the Auto Size Column feature
expands. This is useful when instance names are very long and the Auto Size Column
selection makes the columns too wide.
Note: This maximum setting persists in PowerCanvas. If you want to remove the maximum
setting, specify '0' and click 'OK'.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
410 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reductions by Category
The purpose of using these filters is to reduce the amount of data you view. For example, to display
only those reductions that were auto-accepted, you can filter on 'Auto-Accepted is yes':
You can use this type of filtering to restore the auto-accepted state of the reductions after manually
accepting/rejecting reductions in the GUI and saving your changes.
In the simple mode, you can see there is only one 'Match' filter line. This allows you to filter on
one set of criteria at a time. For example, you can filter reductions that do not reduce total power
by a given amount. For additional information and an example, see Filtering Reduction Results (p. 87)
in the reduction tutorial.
In the following figure, there are two sorting fields and two filtering fields.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 411
Using the PowerCanvas
Note: Sorting is hierarchical and it is applied within levels. Specifically, the sort feature is applied
to the different levels in the following order:
1. Module level
2. Reduction level
3. Line level
4. Instance level
In this sort order, if you sort on bits, you may not get the instance with the highest bits first.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
412 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reductions by Category
To view the results of the Linter PowerBots, launch the 'Linter Reductions' dialog by selecting View
Power Reduction By Category > Linter Reductions.... The 'Linter Reductions' dialog appears as
shown in the following figure:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 413
Using the PowerCanvas
Similar to the 'Simple Reductions' dialog, you can use the 'What's This' feature to get information
on each of the column headers and the 'Match' feature to sort the data.
• Instance: The name of the register instance inferred from the RTL.
• Wasted Power: The total wasted power of the RTL (per module, linter, line, or instance as
applicable).
• Pcnt Wasted: The total wasted power of the RTL in all instances (per module, linter, or line)
as a percentage of the total module power. For modules, it does not include the child
modules.
• Bits: The bit width of the instance associated with the linter.
• Cone Power: The total average power in the exclusive cones of all instances that experience
wasted toggles (per module, linter, or line).
• Start Points: The maximum number of start points in the exclusive cones over all instances
that experience wasted toggles (per module, linter, or line).
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
414 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reductions by Category
• Accept: Ticking this check box causes reductions that can be automatically rewritten to be
scheduled and for all such reductions causes the power saved to be accumulated in the
power summary table.
For details on how you can use the data in this dialog to evaluate MUX power reduction
opportunities, see Understanding the PowerCanvas Data for the MUX Linter (p. 328).
2. Click the 'View' menu and expand/collapse the selections to your level of choice (Reduction,
Line Number, or Instances).
The following figure shows you how you can expand multiple selections down to the line number.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 415
Using the PowerCanvas
The 'All' in the menu items refers to 'all' the items currently displayed in the dialog (not all items
in the database). If you previously filtered some data, that filtered data is not included in the 'All'
operation.
1. Filter out all reductions other than LNR. In the 'Match' field, select 'Reduction contains'
and enter LNR in the text field. Click the magnifying icon to filter the data.
This menu has the same options as the menu that appears when you right-click an instance name
in the reduction list and one additional item-'Show Waveform'. You can also see these options by
right-clicking a net/instance in the 'Detail' tab.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
416 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reductions by Category
• A column to report the 'wasted timestamps' for the REG and MUX linter PowerBots:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 417
Using the PowerCanvas
• For SODC/LER reduction techniques, the help text includes pre-existing enable expressions
for SODC/LER candidate data. In addition, the inferred nets in enable expressions are
expanded in all cases, except when the:
– inferred net expression is traced up to a complex logic gate, such as adder or
comparator, and
– expression is traced up to certain logic levels (16).
• For shared LNR/LER candidates, the help text is enhanced to indicate the registers that share
the reduction opportunity. Sample output is shown below:
To view the results of the 'Prism' PowerBot, launch the 'Prism' dialog by selecting View > Power
Reduction By Category > Prism Reductions.... The Prism dialog appears as shown in the following
figure:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
418 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reductions by Category
Click the '+' signs at the beginning of each line to expand the results. You can also click a row that
has a '+' sign and click the '*' key to expand that row. You see that each line is color-coded, as shown
in the following figure:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 419
Using the PowerCanvas
• White row: These are the gated registers that form the start of the potential enable propagated
chain.
• Green row: These are candidate registers that only have gated registers upstream. Green rows
fall into the easy category.
• Yellow row: These are candidate registers that have gated and/or candidate registers upstream.
These fall into the medium category. Yellow rows are always under green rows.
• Red row: The register instance in this row has unresolved dependencies, that is, the enable
logic required to clock gate this register is partially known. This may happen when a register
is driven by:
– an ungated register in addition to being driven by a white, green, or yellow register.
– a primary input in addition to being driven by a white, green, or yellow register.
– a macro (such as, a memory) in addition to being driven by a white, green, or yellow register.
– a delayed version of itself in a feedback loop in addition to being driven by a white, green,
or yellow register.
The icons at the beginning of each line indicate the type of element in the register chain. The icons
are:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
420 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reductions by Category
• : A register for which an enable is generated by XORing the inputs and outputs. If the register
width is greater than 'min_width', the enable is also used to gate it.
• : A single candidate register, which indicates that the chain is a simple register.
• : Two registers whose outputs drive another register. This indicates that this register is one
of at least two other registers that drive another register. This means that two or more registers
share a common register chain. By selecting the '+' sign that precedes the icon, you can see
the next element in the chain.
• : Two stacked registers, which indicates the start of a common register chain. Somewhere
else in the display is a row that has as the icon. Instead of searching for that, you can
right-click this row and select 'Move Common Chain Here'.
• Easy
Creating an enable for this register from the upstream gated registers is easy. You need to
'OR' the enables and delay by a register.
• Medium
Creating an enable for these registers is not so easy since there is a candidate upstream.
However, an inspection of the schematic can uncover an easy way to create one.
• Hard
Creating an enable for these registers is probably not possible since the upstream of this
register consists of ungateable registers, macros, and primary inputs. However, by looking
at the schematic, you may be able to identify an enable. For example, the upstream
ungateable register might be an initialization flop that never changes state outside of reset.
• Viable
Note: It might not be possible to accept all of these because some might have red candidates
upstream, which can block an enable.
• Automatic
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 421
Using the PowerCanvas
The total number of bits that are accepted for automatic rewrite.
• Manual
The total number of bits that have been accepted for manual rewrite.
• Normal
The view mode or analysis type. You can switch modes/analysis type by using the 'View >
Analysis' menu.
• Modules
The number of Verilog modules or VHDL architectures that are displayed in the dialog.
• Register: For a gated register it is the name of the register where the enable originates. For
a candidate register it is the name of the register to which the enable can be propagated.
• Instance: The name of the register instance inferred from the RTL.
• Reg Power: It is the power of the register before clock gating. The value in parentheses is
the total power, before clock gating, of all the registers in the chain starting from the gated
register.
• Saved Total: It is the total power (register + clock - penalty) saved by gating the clock to
the register. The value in parentheses is the total power (register + clock - penalty) saved in
the chain starting from the gated register if all the registers in the chain were clock gated.
Note: There might not be any savings if the clock gating percentage is too low, too few
register bits are gated, or the logic required to gate the clock, an ICGC, consumes too much
power.
• Saved Reg: The register power saved by gating the clock to the register. The value in
parentheses is the total register power saved in the chain starting from the gated register
if all of the registers in the chain were clock gated.
Note: There might not be any savings if the clock gating percentage is too low or too few
register bits are gated.
• Saved Clock: The clock power saved by gating the clock to the register. The value in
parentheses is the total clock power saved in the chain starting from the gated register if
all of the registers in the chain were clock gated.
Note: There might not be any savings if the clock gating percentage is too low, too few
register bits are gated, or if the ICGC consumes too much power.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
422 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reductions by Category
• Ideal Saved Reg: This is the total register power saved in the chain starting from the gated
register if all the registers in the chain were clock gated, but before subtracting the power
in the enable propagation logic. For a candidate register, this is the register power saved
by gating the clock to the register, before subtracting the power required to propagate the
enable from the upstream registers.
• Ideal Saved Clock: The total clock power saved in the chain starting from the gated register
if all of the registers in the chain were clock gated, but before subtracting the power due
to the ICGCs and additional clock buffers. For a candidate it is the clock power saved by
gating the clock to the register before subtracting the power due to the ICGC and additional
clock buffers.
Note: There might not be any savings if the clock gating percentage is too low, too few
register bits are gated, or if the ICGC consumes too much power.
• Pcnt Gated: The percentage of the time the clock to the register was clock gated. The value
is ('1 - duty cycle') of the feedback MUX select signal expressed as a percentage. For
a gated register, the duty cycle is calculated from the simulation data. For a candidate
register, the duty cycle is estimated by ORing the upstream enables. Sources that cannot be
gated are ignored.
• CGE Imp: The CGE improvement percentage, which is the CGE value after reduction minus
the CGE before reduction. This value is displayed for all candidate registers. The root registers
may or may not have a CGE value. If the root register has its strengthened enables or has a
generated enable (these roots are blue/yellow or yellow icons) then the CGE improvement
is displayed due to the strengthening or new gating.
Note: If the register is a simple user-gated register, no CGE value is displayed since PowerArtist
does not attempt to improve the CGE for these registers.
• Opt?: Indicates (by 'yes/no' values) whether you can save more power by strengthening the
gated register enable. If there are 'yes' values in this column, you can switch to the 'Optimal'
view from the 'Normal' view to see the extra savings. To switch views, select ' View >
Analysis > Optimal'.
• Gated Regs: The number of upstream gated registers from which an enable can be
propagated.
• Candidates: The number of upstream candidate registers from which an enable can
potentially be propagated. A candidate that has a candidate upstream of it becomes a
'medium' gating opportunity.
• Ungateable: The number of ungateable sources upstream. You need to inspect these sources
to see if they prevent you from clock gating the register. Ungateable sources makes a
candidate a 'hard' gating opportunity.
• CDC: If 'false', the register does not cross clock domains and it is in a one clock domain.
If 'true', the register is in more than one clock domain.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 423
Using the PowerCanvas
• Local Enable: The number of enables that are available in the same module as the candidate
register.
• Extrn Enable: The number of enables that need to be routed to the same module as the
candidate register from other modules.
• Feeds Back: Indicates whether the output from the candidate register feeds back to its input
via another register. This might prevent you from gating the clock to the register.
• Accept: Ticking this check box causes reductions that can be automatically rewritten to be
scheduled (when 'Automatic' is selected from the pull-down menu) and adds the power
saved by any accepted reduction to the power summary table.
• Rewrite: The word 'Scheduled' appears in this column when a reduction opportunity is
accepted for 'Automatic' rewrite.
The purpose of using these filters is to reduce the amount of data you are viewing at any point in
time. Filters starting with 'Any...' mean that if a condition matches any register in a chain, the whole
chain is visible whereas filters starting with 'All...' require that all registers in a chain match the
condition for the chain to be visible. Filters starting with 'Chain...' apply to the values associated
with the first or gated register in the chain, which are rolled-up values for the entire chain. The
goal is to reduce your power as much as possible with as little work as possible. There are several
approaches to this problem:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
424 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reductions by Category
• Focus on a Module
You know by reviewing the hierarchy display that one module consumes more power
than it should. You should then use the 'Any Module' filter to examine that particular
module. If the module has multiple instantiations you see data for all the instantiations.
From the hierarchy browser again, you might realize that there is one particular
instantiation of the module that is consuming more power than the others. You can
then use the 'Any Instance' filter to locate register chains involving that instance.
For example, you can specify 'top.core1' as the 'contains' criteria to focus on all
the register chains involving that module instance.
You may be very concerned about the clock power for a particular clock. You run
PowerArtist and notice that one clock domain consumed more power than you expected.
Use the 'Any Clock Net' filter with the full clock name to locate those register chains
that are in the desired clock domain.
If you want to see the opportunities that provide the most savings choose 'Chain
Saved Total' and look for a number greater than some value.
Another way of looking at opportunities is by 'bit width'. Generally, the wider the
register bank, the greater the opportunity for power savings. Use the 'Any Bits' filter
and specify a bit width size using the 'greater than' operand.
Making a source code edit where you do not have to cross module boundaries is the
easiest alternative. This means that the enable signal you are missing is local to your
module. Choose 'All Local Enable' and then specify '0' with the 'greater than'
operand and the displayed opportunities requiring edits to just one file are displayed.
You should also focus first on registers that have no ungateable elements in their chain.
This means that enables are all immediately available. Filtering on 'All Ungateable
equals 0' is a good start because this leaves you with chains where the registers can
be gated using upstream registers. But some of these upstream registers might themselves
be more difficult opportunities.
After making the easy changes, if you still want to reduce power, you should remove all
the opportunities you have accepted from your view. Filter on 'Any Accepted No'
to remove any chain with an accepted opportunity. To focus on chains crossing module
boundaries, filter on 'Any Extrn Enable greater than 0'.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 425
Using the PowerCanvas
the 'Prism' powerbot results. This is because Prism replicates existing enables to use as the enables
of candidate registers later in the chain. If these replicated enables are recognized by CEC, you may
be wasting power in both the gated register and in every register downstream that uses that enable.
Therefore, by making that one enable more efficient, you save even more power in the entire chain.
• Normal
The 'Normal' view represents the power savings you can achieve given the simulation vectors
used to perform the reduction analysis.
• Optimal
The 'Optimal' view represents the power savings you can achieve if your enable was
'optimal'.
By examining the difference between the Normal and Optimal savings values, you can see the
impact that an inefficient enable has on multiple registers in your design. You can toggle between
the two views using the View > Analysis menu.
If its value is 'yes' then this chain has an inefficient enable, which you can optimize to further reduce
power. If its value is 'no' then this chain has the best enable possible given the simulation vectors
used to perform the reduction analysis.
The 'Prism' dialog displays this field for the root (gated) register because this is the enable signal
that is leveraged through the chain. As with other columns in the dialog, you can filter data using
this column's value. For example, to see only 'Prism' opportunities with enables that are inefficient
and can be optimized, filter the data using 'Chain Optimized is yes'.
Note: When you switch views between 'Normal' and 'Optimal', PowerArtist recalculates all the
values in the dialog, including roll-up values, using the appropriate data. It also updates the summary
pane.
1. Run the 'ReducePower' command with the 'Prism' PowerBot enabled and open the 'Prism'
dialog in PowerCanvas.
2. Ensure that the display is set to 'Analysis: Optimal' mode by selecting View > Analysis
> Optimal. Verify that you are in the 'Optimal' mode by checking the status bar at the
bottom right of the dialog.
3. Filter chains that need optimizing and chains with small bit width registers by applying
the following filters:
a. Chain Optimized is no
b. Any Bits greater than 2
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
426 of ANSYS, Inc. and its subsidiaries and affiliates.
Viewing Reductions by Clock Enables
4. Accept all the easy chains by selecting Reductions > Mark All Chains Accepted > Just
Easy Candidates.
6. To see just these chains set a single filter to 'Any Accepted is yes'.
7. Sort on 'Saved Total' column by clicking the column header. You now have a list of
register chains with readily available efficient enables that can be implemented easily.
8. Repeat the process on chains that would benefit from more efficient enables. To do this,
first define the following filters:
a. Chain Optimized is yes
b. Any Bit greater than 2
9. Accept all the easy chains by selecting Reductions > Mark All Chains Accepted > Just
Easy Candidates.
10. Note how the total savings have increased in the summary table. If this amount is substantial,
then modify the previous filter to:
a. Chain Optimized is yes
b. Any Accepted is yes
11. Sort on 'Saved Total' column by clicking the column header. You now have a list of
register chains with inefficient enables. If implemented, these provide extra power savings.
12. If there are many chains like these, it might be useful to see if it is worth the effort to create
better enables to achieve the extra savings. To do this toggle the display to 'Normal' by
selecting View > Analysis > Normal.
Note how the total savings in the summary table decrease. Based on this decrease, you
can decide whether you want generate better enables or just use the existing enables.
13. At this point, you are left with things that are potentially more difficult to implement. Follow
your previously established methodologies.
These viewers are not efficient for clock-gating opportunities that cover multiple instances. Additionally,
clock-gating techniques can also identify a single enable condition that can be used for all registers in
a group. To show this information, a new reduction dialog is added to the GUI. It is similar to the 'Simple
Reduction' dialog, but organizes the opportunities by enable condition (similar to the 'by-enable'
text report), instead of being module-centric.
You can launch the new dialog by clicking ' View > Reductions By Enable...':
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 427
Using the PowerCanvas
You can use this viewer to view the full enable expression, by one of these methods:
• Click the 'Enable ID' and the full text expression is available in the 'Help' tab below.
• Right-click the 'Show Enable Expression' menu to bring up the 'Enable Expression' dialog.
The GUI can also display the clock gating expression for ECG opportunities in addition to regular clock
gating. To view the ECG enable expression, right-click a register in the power table and select ' Show
Clock Gate Enables'.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
428 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Waveform Viewer
If this item is disabled (grey color), then the register is not clock gated. If this item is not disabled (black
color), it launches the 'Properties' dialog, which shows the clock gating enable expression.
The waveform viewer supports all FSDB files that PowerArtist supports. The waveform viewer
also supports ETCL and PTCL files.
As a PowerArtist user, you use FSDB files and potentially PTCL files. There is very little reason
to use PTCL files since PowerArtist has the capability of generating power waveforms in the
FSDB format. These will be much faster and take less disk space than their .ptcl equivalents.
For details, see Displaying Waveforms from an HSPICE or Spectre Simulation (p. 434).
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 429
Using the PowerCanvas
1. Select 'Tools > Waveform Viewer...' from the main PowerCanvas window.
This launches the 'Waveform Viewer' as a separate window with the 'Add Waveform Source' dialog
open.
2. From the 'Add Waveform Source' dialog, select an FSDB file (or PTCL file). For demonstration
purposes, you can use the FSDB file in the PowerArtist analysis tutorial. Navigate to the
'$POWERARTIST_ROOT/tutorial/analysis/reports' directory and select
'activity_waveform.fsdb'.
The following figure shows the 'Search' tab with a list of available waveforms:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
430 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Waveform Viewer
• Type in a search pattern in the 'Waveform Name:' field. The pattern is case-insensitive and
can contain the '*' wild card character.
When you select an instance in the 'Schematic', the name is transferred to the 'Waveform
Name:' field with two modifications. The syntax is:
*.full_path_to_instance.*
The '*.' is added to the beginning of all cross-probed nets/instance. This is due to the
top-level hierarchy of the testbench that is reflected in the FSDB file. Adding a '*' wild card
at the beginning of the name matches any top-level string that begins the hierarchical net
names such as, 'testbench.top0'.
The '.*' is added to the end of the hierarchical name so that the waveform viewer finds
all the nets defined in the selected instance. It recursively matches all the nets defined by
its children instances also. For the sample screen shot in Figure 16.28: Selecting an FSDB
File with the Waveform Viewer (p. 430), if you select 't1/txchan' the following name is
added to the 'Waveform Name:' field in the 'Search' tab:
*.core1.t1.*
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 431
Using the PowerCanvas
If you select a wire, the name of the associated net appears in the 'Waveform Name:' field
as:
*.full_path_to_net
Since there is a single net associated with the wire, there is no need for the '.*' at the end
of the name. If you select a bus, the generated name is:
*.full_path_to_bus[*]
If you select an inferred instance or net, then no cross-probing is done to the waveform
browser since there can be no possible match in the FSDB file.
5. After the 'Waveform Name:' field is specified, click the 'Search' button to perform the search.
Cross-probing performs an automatic search for you. The waveforms that are found, in the selected
waveform source, are listed in the box below the entry field.
In this figure, the search pattern is '*.clk', which locates 30 waveforms. If your search returns
more than 100 matches, the browser displays the first 100 matches and generates a warning that
the remaining matches are not displayed.
The 'Search History:' field contains a log of all searches in the current session. As you keep searching,
this menu is updated, allowing you to quickly go back and forth between different search results.
This eliminates the need to re-invoke a search for a given pattern. For any of the listed searches,
the first number indicates the waveform source for which the search was executed, followed by
the pattern that was entered, and finally the number of matches.
6. From the list of available waveforms, select the waveforms to display and click the 'Add waveforms
to plot area' button. To select all the listed waveforms, right-click and select 'Select All'. If the
external file size is large, it may take some time for the waveforms to appear.
Note: Although the option appears available, you cannot place more than one digital waveform
in a single plot (it does not look right). The following figure shows three waveforms in individual
plots that were selected from the 'Properties' dialog:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
432 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Waveform Viewer
7. Right-click any plot to bring up a menu of available operations. You can manipulate the display
using the 'Display Options' menu. For easier viewing, the plots in this figure were increased in
width by 20% using the 'Display Options > Increase height of all plots by 20%' option. For
more information on options, see Using the Waveform Viewer Options (p. 435).
• The first element indicates the type of waveform: 'u' (unknown), 'p' (power), 's' (state), or 'v'
(voltage).
• The second element represents the domain: 't' (time) or 'f' (frequency).
• The third element is the index number assigned to the source of the waveform. This index is
listed next to the source name on the 'Waveform Source:' drop-down list. The '0' index is used
for the first waveform source. This index is increased by '1' for each additional source.
• The fourth element follows the pipe and indicates the name of the waveform as it exists in
the waveform source. The following figure breaks-down a sample waveform name:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 433
Using the PowerCanvas
In this figure, the waveform is a 'state' waveform in the 'time' domain for a waveform called
'txrx_tst.clk' in the 'first' listed source (source index '0').
To zoom-in on particular area of interest on a waveform, click the middle mouse button and hold it
down while dragging the mouse to form a rectangle around the area of interest.
– To generate the output in 'CSDF' format, you must include the following setting in
your HSPICE simulation input file:
.options CSDF
Other output format options must not be specified after this CSDF specification. For
example, specifying '.options POST' overrides the 'CSDF' setting. Since a CSDF file
is an ASCII file, displaying waveforms from very large CSDF files is slow. However, you
can speed up this process by using '.PROBE v(XXX)' statements in your HSPICE
simulation input file to limit the number of reported waveforms.
– To generate the output in 'PSF' format, you must include the following setting in your
HSPICE simulation input file:
.options psf=2
Specifying '2' creates an ASCII PSF file, which the waveform viewer supports.
Note: The Waveform Viewer does not support binary PSF files.
Finally, load the HSPICE or Spectre output files as you would any source file.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
434 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Waveform Viewer
• Take a snapshot
To take a snapshot of the current waveform view, press 's' or right-click and select 'Snapshot' from
the options. You can save the snapshot in '.png' or '.gif' format. The default format is '.png'
due to its small file size.
• Navigate — For more information, see Using the Navigation Sub-menu (p. 435).
• Measure and annotate — For more information, see Using the Measurement and Annotation
Sub-menu (p. 436).
• Delete a plot, Delete all plots, and Delete other plots (other than the current plot).
• Display options — For more information, see Using the Display Options Sub-menu (p. 436).
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 435
Using the PowerCanvas
• Mark a data point. Simply hover the cursor over any area on a waveform and press the 'm'
or select 'Mark data point' from the option.
• Delete all data point markers on plot or on all plots.
• Add a note. For more information, see Adding Notes to a Plot (p. 437).
• Delete notes on a plot.
• Toggle the ruler feature. For more information on using the ruler, see Measuring the Distance
Between Two Data Points (p. 262).
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
436 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Waveform Viewer
Use the following process add notes to a waveform and take a snapshot:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 437
Using the PowerCanvas
You can also right-click any waveform and select 'Measurements and Annotation > Add a
note'.
The note is added at the point where you originally clicked the waveform.
If you already have individual plots, you can drag one waveform into the plot of another. To do so,
click anywhere on a waveform and drag it to the other plot.
If you are a new user, you might want to tear the 'Tips' tab for quick reference while you are viewing
the waveform tab. This is also useful for comparing 'time-domain' waveforms against the 'frequency
spectrum' waveforms.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
438 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Waveform Viewer
CGE Description
Metrics
SCGE Static Clock Gating Efficiency. A metric that captures the percentage of gated flops
in the design. This is a static metric and is independent of the stimulus or mode
of the design. This is defined as a percentage of clock gated flops in the design.
It is calculated using the following formula:
DACGE = (100 *
((gated_cycles+data_toggle_cycles)/total_cycles))
CGEE Clock Gating Enable Efficiency. A metric that captures the scenarios where the
data is stable over a period of time and the flop is unnecessarily getting clocked.
It applies to both gated and ungated flops in the design. In case of an ungated
flop, the enable condition is assumed to be always enabled. A low CGEE value for
a flop signifies the clock is not well gated. A high CGEE value for a flop signifies
the clock is well gated.
The GUI shows these clock gating efficiency metrics in the power table for interactive power debug:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 439
Using the PowerCanvas
• The 'Clk Traced' column has one of these values — 'Yes', 'No', or '--'. The 'Yes/No' values
occur on sequential elements and indicate whether they are traced or not.
• Dynamic CGE values can now have the following four possible states:
– A value between '0' and '100%' to indicate the usual efficiency.
– 'U' to indicate an untraced sequential element.
– 'ZF' to indicate that the clock to the element is zero.
– '--' to indicate that CG does not apply to the gate.
• The icon for untraced elements is different. Refer to the highlighted icon in the screen shot:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
440 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Signal Viewer
Note: The PDB loaded in the APSH console is not automatically loaded in the GUI. To load the PDB
in the GUI, run run 'oadbInit' in the APSH console to attach the PDB to the APSH console.
2. Select 'Tools > Signal Viewer...'. The Signal Viewer is launched as a separate window, as
shown below:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 441
Using the PowerCanvas
The waveform is highlighted to indicate the duration when power is wasted. This is supported for
the following types of opportunities:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
442 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Signal Viewer
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 443
Using the PowerCanvas
Note: The enable for the new candidate gates clock for higher number of cycles, but the highlighting
is based on the common cycles in which the clocks of both registers are disabled, so there is no
change to the highlighted area.
Note: The highlighted region is smaller now to reflect the common cycles, which are gated using
the three different enables.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
444 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Signal Viewer
By default the leaf-level names of expression literals are shown in the Signal Viewer:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 445
Using the PowerCanvas
Hierarchical Name
The signal names shown at the 'hierarchical' naming style:
Unique Name
The signal names shown at the 'unique' naming style:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
446 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Signal Viewer
Leaf Name
The signal names shown at the 'leaf' naming style:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 447
Using the PowerCanvas
• Select a linter reduction candidate, right-click, and select the 'Show Waveform(s)' option.
This launches the 'Signal Viewer' with the signals related to the candidates.
or
• Drag and drop the linter reduction candidate to an open 'Signal Viewer' window. The
following figure shows the MUX linter candidate's waveform in the Signal Viewer:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
448 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Source Browser
The waveforms of 'data[7:0]' enabled at '~sel' and 'data1[7:0]' enabled at 'sel' are
all plotted.
Note: A section of the waveform for 'data1[7:0]' is highlighted in blue color, which
represents a wasted toggle.
• Click the element and then select 'Design > Hierarchy > Show in Source'.
or
• 'Show in Source' from the right-click menu.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 449
Using the PowerCanvas
16.12.1. Features
The following enhancements are implemented:
• Drag-n-Drop
Drag-n-drop support enables you to drag-n-drop instances from the source browser to
other areas, such as the 'Schematic Viewer' or the 'Signal Viewer'. You can also drop
instances from anywhere within PowerArtist and view the corresponding design file.
• Multiple Tabs
You can open multiple design files simultaneously as multiple tab support is implemented.
Each design file is opened in a new tab, preserving scroll locations as you change the view
between source files. Tabs may be removed or deleted using the 'x' button on each tab.
• 'Property' columns
The line number and power color are displayed in the property columns.
Power of each instance is colorized relative to the power of the parent instance.
If you hover your mouse over an instance or module, its properties are displayed in the
Info pane of PowerArtist GUI.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
450 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Source Browser
• Search
The search capability is bi-directional. The direction of the search is controlled by the arrow
buttons to the right of the search entry field. Searches automatically wrap around to the
opposite of the file once the top or bottom is reached. Additionally, the search history is
maintained.
The Source Browser can locate source files regardless of where PowerArtist is invoked.
Note: You need to regenerate the .scn (scenario database) and the .pdb (power
database), to use this feature as the Source Browser uses the invocation directory
remembered during elaboration ('Elaborate').
To launch the browser, right-click an ODC opportunity in the 'Reduction Browser' and select 'Show
Source':
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 451
Using the PowerCanvas
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
452 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Source Browser
The following diagram shows an example, where there is an intermediate net 'out' between the
delay flop and the steering logic where the net is the output of the intermediate 'AND' logic:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 453
Using the PowerCanvas
• The elements in the 'candidate segment' are highlighted with the color of the candidate
(Green).
• The elements in 'delay segment' are highlighted with the color of the delay flops (Blue).
• The elements in 'literal segment' are highlighted with the color of the enable literals (Yellow).
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
454 of ANSYS, Inc. and its subsidiaries and affiliates.
Using the Source Browser
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 455
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
456 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 17: Analyzing the Effects of Power Gating
with Proprietary Commands
17.1. Introduction
Defining voltage domains and performing power gating can help to aggressively reduce power. Early
visibility into design trade-offs involving these techniques at the RT level of abstraction are valuable.
There are two methods for exploring multiple voltage domains and performing power gating in
PowerArtist:
This chapter describes a method for exclusively using PowerArtist proprietary commands to
explore multiple voltage domains, define power domains, and perform simulation-based or a
vectorless analysis of power domains.
For information on using UPF file format, see the section titled The UPF File Format in the
PowerArtist Reference Manual. The section describes only a portion of the overall flow that UPF
can replace. The remaining steps in the flow are described in the following sections in this
chapter.
Chapter Organization
The following topics are covered in this chapter:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 457
Analyzing the Effects of Power Gating with Proprietary Commands
• RTL source files with named begin blocks (for Verilog designs) and named process (for VHDL designs)
to control the default cell selection of retention flops and latches.
The command file contains all the Tcl commands used to specify inputs such as clocks, defines libraries
for use in various portions of your design, virtual supplies, voltage and power domains, and wire load
models.
For vectorless analysis, while defining a virtual supply, the 'ON' condition must be a constant '0' or
constant '1'. For simulation-based analysis, that condition is any legal boolean expression of the
design nets in the target language.
• A scenario file representing the RTL or mixed RTL and gate design
For vectorless power analysis, the instantiated gate-level logic should be small (to almost
non-existent) to minimize any problems with propagating activity through gates. For complete details
on creating a scenario file, see Getting Your Design into PowerArtist (p. 133). See Special Option to
the 'Elaborate' Command (p. 460) for information specific to power gating. You may also analyze an
entire gate-level design.
For simulation-based power analysis, you need an activity file in either FSDB, VCD, or IAF file formats.
The VCDe format is generated by Ansys PLI routines. See Acquiring Simulation Data (p. 207) for more
information on activity file formats.
For simulation-based power analysis, you must specify a reference clock. This is the fastest clock
in the design. It is used to calculate activity factors. All other signals are assumed to be toggling
slower than this signal.
For simulation-based power analysis, once the number of clock cycles is reached, the time-based
power analyzer performs average power analysis for that interval. This process is repeated from the
'-start_time' to the '-finish_time' giving you a power-over-time curve.
For vectorless power analysis, see Performing Vectorless Power Analysis with Power Gating (p. 462)
for more information.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
458 of ANSYS, Inc. and its subsidiaries and affiliates.
Required Inputs for Power Gating
This is a cell-level attribute that indicates that the given cell is a retention flop or latch. Use the
'MapRetentionCell' command to map a type of retention cell specified by the value of this attribute
to a particular always block.
There can be a variety of retention cells in your library. By understanding how your design operates,
you may want to control which latches or flops from your power libraries are chosen at a very fine
level of granularity. In Verilog, the level of granularity is the 'always @' block-level and in VHDL it
is the 'process' level. The Verilog and VHDL sample fragments demonstrate this use.
Sample Verilog
module top(....);
...
always @(posedge clock)
begin : tag1
out1 = in1;
end
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 459
Analyzing the Effects of Power Gating with Proprietary Commands
Sample VHDL
architecture synth of top is
...
begin
tag1: process (clock)
begin
if (clock = '1' and clock'event) then
out1 = in1;
end if
end process
Note: Later sections show how to control default cell selection so that 'out1', 'out2', and 'out3' are
different types of retention flops.
• Define how you want the clocks inferred using the 'SetClockNet' command.
• Ensure that the wire load models are selected correctly to ensure that interconnect capacitance
is estimated correctly.
• Define output loads. See Using Default Wire Load Models for Capacitance Analysis (p. 173) for
more information.
For the power gating flow, you need to the following additional steps:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
460 of ANSYS, Inc. and its subsidiaries and affiliates.
Setting up Your Command File for Power Gating
For the power gating flow, you need to define which libraries are used for power analysis for
various hierarchical instances using the 'SetLibrary' command. Assigning one or more libraries
to an instance controls the following:
– Default cell selection for the RTL power models.
– Wire load model selection for use in estimating interconnect capacitance for the instance (if
the libraries contain wire load models).
– Gate-level power models for instantiated cells.
– Power rail names that are available for use by voltage and power domains.
See Handling Designs with Multiple Libraries (p. 175) for complete details.
Virtual supplies (design rails) are associated with library power rails and are used to perform
'what-if' experiments with respect to voltage islands or derating the voltages in libraries. They
are also used for power gating applications. To define virtual supplies, use the
'CreateVirtualSupply' command. See Creating a Virtual Supply (p. 176) for complete details.
Use the 'CreateDomain' command to create voltage and power domains. See Assigning a Virtual
Supply to a Hierarchical Instance (p. 176) for complete details.
To define the assignment of retention flops and latches to particular inferred register and latch
instances, create named Verilog begin blocks or VHDL process statements (described in Creating
Source Files (p. 459)). Then specify the 'MapRetentionCell' command for the named begin blocks
or process statements.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 461
Analyzing the Effects of Power Gating with Proprietary Commands
Note: To perform time-based power analysis with power gating, you can:
• Add this sample command specification to the command file you created in the previous section
(Sample Command File for a Power Gating Flow (p. 461) that includes the SetLibrary' and
CreateVirtualSupply' commands.
or
• Source that command file from this one using the 'source' command.
• Accurately define the frequency and duty cycle for your clocks and primary IOs of your design.
• Specify the frequency and duty cycles of enable signals for clock gating.
• Specify the read/write frequencies for the memories in your design.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
462 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding the Output Reports for Power Gating Analysis
This section that identifies the power and voltage domains with the type name 'domain'.
2. Detailed Instance Power
==========================
This section provides power numbers for each defined power domain - for 'average power'
and 'On Power'.
4. Power Per Domain
===================
The 'average power' is the overall average, which includes power consumption for times when
the power domain is 'on' and 'off'. The 'On Power' is the average power consumed only when
the power domain is switched 'on'.
This section provides information on the power domains set up for this design. Information
includes library names and details of the virtual supplies (including On condition setting,
analysis voltage, and static and dynamic power numbers).
5. Power Domain Summary
=======================
Domain domain_0
----------------------
Library typical
File: ../typical.lib
Library typical1
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 463
Analyzing the Effects of Power Gating with Proprietary Commands
File: ../typical1.lib
Library typical2
File: ../typical2.lib
Virtual Supply: VDDSW_0
Library Supplies:
typical1.VDD
typical2.VDD
typical3.VDD
typical4.VDD
typical.VDD
Estimation Voltage: 1.2 V (from Tcl file)
On condition: domain1_on & ! domain2_on
Average Static Power: 116.33uW
Average Dynamic Power: 23.404mW
On Static Power: 116.41uW
On Dynamic Power: 23.419mW
Virtual Supply: VDDSW_1
Library Supplies:
typical4.VDDNW
typical.VDDNW
Estimation Voltage: 1.2 V (from Tcl file)
On condition: domain1_on & domain2_on
Average Static Power: 799.43nW
Average Dynamic Power: 1.253mW
On Static Power: 799.93nW
On Dynamic Power: 1.2538mW
This section highlights the power for each domain by setting the model to 'domain', as shown
in the following excerpt:
3. Internal power consumption
=============================
Power(Watts)
Component Model Supply Static Dynamic Total
--------- ----- ------ ------ ------- -----
instance_1 user VDD_typ 26.9nW 226mW 226mW
#48 and VDD_typ 35.9pW 1.64nW 1.68nW
#55 comparator VDD_typ 506pW 3mW 3mW
#56 comparator VDD_typ 502pW 2.92mW 2.92mW
ra1 domain VDD_typ 3.56nW 40.5mW 40.5mW
#1 latch VDD_typ 568pW 13.9mW 13.9mW
#2 latch VDD_typ 1.14nW 17.3mW 17.3mW
<snip>
Total internal power 26.9nW 226mW 226mW
This section provides information on the power domains defined for this design. Information
includes library names and details of the virtual supplies (including On condition setting,
analysis voltage, and static and dynamic power numbers associated with the supply):
6. Power Domain Summary
=======================
Domain instance_1.ra2
-----------------------
Library typical
File: typical.lib
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
464 of ANSYS, Inc. and its subsidiaries and affiliates.
Understanding the Output Reports for Power Gating Analysis
Library typical2.db
File: typical2.small.lib
Virtual Supply: VDD_typ
Library Supplies:
typical.vdd
Estimation Voltage: 2.5 V (from Tcl file)
On condition: 1
Static Power: 26.9nW
Dynamic Power: 226mW
<snip>
Virtual Supply: VDDNSW
Library Supplies:
typical2.db.VDDNW
Estimation Voltage: 2.5 V (from Tcl file)
On condition: On
Static Power: 0W
Dynamic Power: 0W
Domain instance_1.ra1
-----------------------
Library typical
File: typical.lib
Library typical2.db
File: typical2.small.lib
Virtual Supply: VDD_typ
Library Supplies:
typical.vdd
Estimation Voltage: 2.5 V (from Tcl file)
On condition: 1
Static Power: 26.9nW
Dynamic Power: 226mW
<snip>
Virtual Supply: VDDNSW1
Library Supplies:
typical2.db.VDDNW
Estimation Voltage: 2.5 V (from Tcl file)
On condition: 1
Static Power: 0W
Dynamic Power: 0W
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 465
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
466 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 18: Generating and Using PACE Technology
Files
18.1. Overview
PACE is an acronym for PowerArtist Calibrator and Estimator. It is a technology that improves power
accuracy. The goal of PACE is to enable out-of-box power analysis accuracy at RTL and pre-layout gates.
PowerArtist reads a post-layout, post-CTS reference-design and generates a PACE model. This PACE
model can be used for RTL power analysis with improved capacitance characterization and clock tree
modeling information.
When the PACE analyzer runs, it inspects the characteristics of a given gate-level design and builds a
model of those characteristics that can be used to analyze the power of other designs that share the
same fabrication technology. The gate-level design used for the model must be fully placed and routed
and have a synthesized clock tree.
1. A library developer, potentially a CAD team member, runs the PACE analyzer on an existing
design and generates the PACE model. The library developer then publishes that model by
placing it in a generally accessible file location.
2. An end user runs PowerArtist using this model by specifying the PACE technology file as input
to either the 'CalculatePower' or the 'ReducePower' command. The power analyzer reads and
takes advantage of the PACE model.
A PACE model contains two types of information-capacitance models and clock tree distribution network
models.
Chapter Organization
The following topics are covered in this chapter:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 467
Generating and Using PACE Technology Files
1. Physical attributes like capacitance estimation, clock tree modeling, and transition time inputs.
2. Low power structure modeling using CPF/UPF.
3. Micro-architectural inferencing and cell selection.
4. Algorithms internal to the tool like activity propagation and power calculation.
The inputs in factors 1-3 impact power analysis accuracy. PACE addresses out-of-box modeling of physical
inputs such as, capacitance and clock tree.
Traditionally, wire-load models are used for RTL power analysis. Wire-load models are sometimes too
pessimistic or unavailable. This limits the availability of accurate capacitance data for RTL power analysis.
To estimate clock tree power at RTL, you must specify the type of clock gating cell to use, a set of root,
branch and leaf clock buffers and their fanouts. RTL designers are often not familiar with this information,
and inaccurate information provided for clock tree inferencing results in inaccurate power numbers.
PACE model accurately models the capacitance profile of the design and you do not need to deal with
a number of switch settings for capacitance and clock tree modeling.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
468 of ANSYS, Inc. and its subsidiaries and affiliates.
Capacitance Models
• Liberty files for smaller geometry sizes may not contain wire load model information.
• Wire load models are traditionally designed to help close timing and, as such, are more pessimistic
than what is most likely available in the real design.
Note: To use this feature, ensure that pin coordinates are available in the input SPEF file.
or:
pa_set pace_cap_enhanced_variation_mode true
WriteTechnologyFile -spef <spef_file_name>.spef
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 469
Generating and Using PACE Technology Files
A large percentage of the correlation problems encountered involve approximating the distribution
network topology that is ultimately chosen during clock tree synthesis and optimization. Key parameters
include the selection of clock buffers for branch, root and leaf buffers and the fanout that each buffer
drives. PACE may choose different buffers based on the frequency of the associated clock net. It makes
similar decisions for the ICGCs in the design.
If the PACE model contains a cell model, it is automatically applied to the RT-level. You can choose to
selectively apply the cell model, by using one of the following commands:
CalculatePower -use_pace_model_category cell
CalculatePower -use_pace_model_category {cap cell}
Cell distribution from the PACE model is ignored if you have specified 'SetVT' commands.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
470 of ANSYS, Inc. and its subsidiaries and affiliates.
Generating a PACE Model
If 'pa_set map_original_gates' is set to 'true' and PACE model is regenerated using 21R2.X version,
cell mapping is based on the following rules:
• If a cell exists in the library and the mapping information is available in the (regenerated) PACE
model, then the PACE cell model is used.
• If a cell does not exist in the library and the mapping information is available in the (regenerated)
PACE model, cell mapping as per the non-PACE flow is used.
• If a cell exists in the library but the mapping information is not available in the (regenerated)
PACE model, cell mapping as per non-PACE flow is used.
Note: To enable cell mapping, the PACE model version is updated. You should regenerate the PACE
model if you see warning 'UTL-246'.
• Gate-level netlist
• SPEF file
80% or more of the nets in the design must be successfully back-annotated from your SPEF
file. Poorer back-annotation does not result in a representative PACE model.
• Library files in liberty format, including .libs for memories and other macros instantiated in the
design
• SDC file
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 471
Generating and Using PACE Technology Files
The SDC file must successfully identify at least one placed and routed clock network in your
design. The SDC file must include the frequency for each of your clocks in order to generate
the PACE model. The SDC file assists in specifying 'SetClockNet' commands:
– For capacitance model, only clock root nets are needed.
– For clock tree model, clock frequencies are also needed.
• 'SetClockNet' commands with frequency information
• 'DefineMemory' commands for identification for memories
• The design must also contain registers and remaining combinational logic. IO pads and
instantiated memories are not required, but it is best if your design contains these logic
elements too.
• Clock definitions
These are captured in SDC files using the '-sdc_files' option to the 'WriteTechnologyFile'
command. This is the preferred input. If you do not have one that matches your design, you
can create one that is good enough to supply clock definitions or use SetClockNet' commands
to define the clocks.
• User-defined information
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
472 of ANSYS, Inc. and its subsidiaries and affiliates.
Generating a PACE Model
Note: If you do not specify a path, the output file is created in the run directory.
For the complete command syntax, see the 'WriteTechnologyFile' command in the PowerArtist
Reference Manual.
# Specify memories
DefineMemory -library {}
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 473
Generating and Using PACE Technology Files
Notes:
While this is optional, it is best to specify this if it cannot be extracted from the SDC file. If you
do not specify this value, 100ps is assumed. If you do not specify this option and PACE could
not determine if from your SDC file, the following message is issued:
Warning ENG-598: Absence of a default slew or transition time file limits the
accuracy of the generated PACE model. Please consider supplying
default slew (pa_set default_transition_time) or transition
time file (pa_set transition_time_file). Using 100ps as the
default slew for PACE model generation.
• 'SetClockNet' commands
If you are not using an SDC file, you need specify the '-frequency' option to the 'SetClockNet'
command. PACE generates clock models as a function of clock frequency. If you do not specify
'-frequency' and PACE is unable to determine the clock frequencies from the SDC file, the
following message is issued:
Warning ENG-92: Absence of frequency on Clock "foo" limits the accuracy of
the generated PACE model. Please consider supplying frequency
for all clocks.
The design for which you choose to create the PACE model should use a reasonable number
of different clock frequencies. The clock nets, when traced, should also have a reasonable
number of sub-nets (at least 50). PowerArtist generates a summary for each net traced using
messages 'ENG-532' and 'ENG-533':
Note ENG-532: Below are clock subnet counts for all clock nets
in the design. The design should be a post CTS netlist
and all subnet counts should be high. The counts are the
number of traced nets in the clock distribution network.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
474 of ANSYS, Inc. and its subsidiaries and affiliates.
Using a PACE Model
Note: Nets that do not have at least 50 sub-nets are flagged with an '*' in message 'ENG-532'.
In addition, the design should use clock gating cells. If there is no clock gating in the design,
the resulting PACE model cannot be used in subsequent analysis runs where clock gating is
requested.
In addition, it prints Note 'UTL-7' to indicate the types of models in the PACE file:
Note UTL-7: found following power models:
capacitance model
clock network model
1. Performs HDL Inferencing on your design. It runs the 'Elaborate' command using the Verilog
startup file, the Liberty libraries, and the top-level module name. By default, this process
creates a scenario file called 'top.scn'. For the sample script, it is 'top.scn'.
2. Performs the first phase of the power analysis. It reads the scenario, Liberty, and SPEF file(s)
and builds the capacitance model and the clock distribution network model.
3. Writes the PACE model file. For the sample script above, the PACE model is saved in
'power.tech'.
As with all commands that perform extensive processing, you can specify the '-wait_for_license
true' option. Specify wait_for_license_timeout <int> to wait for the specified number of
seconds while checking for license availability.
By default, all models present in the pace file are used for power analysis. A PACE model file contains
capacitance models, clock distribution network models, and cell models. The capacitance models improve
capacitance estimation accuracy. Similarly, the PACE clock distribution network models improve the
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 475
Generating and Using PACE Technology Files
modeling of distribution network topology and improve power analysis accuracy. The models apply to
a pure gate-level, mixed gate and RTL, or pure RTL power analysis.
Note the following points about this run script that uses a PACE model:
• The 'SetClockNet -frequency' option is specified for all clocks in the design.
• The 'SetAttribute' commands in this script ensure that cell 'CKENAIAX8' is considered as an ICGC
and buffer 'BUFX16' is not considered at all.
• The final line in this script is the 'CalculatePower' command that includes the PACE model through
the '-power_tech_file' option and other required parameters.
Note: You can also specify the '-power_tech_file' option with the 'ReducePower' command.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
476 of ANSYS, Inc. and its subsidiaries and affiliates.
Using a PACE Model
All other parameters specified with the 'SetClockGatingStyle' command are ignored when
using a PACE model.
For more details, refer to the Advanced Buffer Modeling in PACE (p. 491) chapter.
• Manual back annotation methods take precedence over PACE models. This includes SPEF files, wire
capacitance files, output load files, and default output load capacitance.
• PACE models take priority over any wire load model-based capacitance estimation technique you
have applied. This includes SetWireLoadModel, default wire load library lookups in Liberty files,
and the 'seqcap.lib' default wire load model.
Also, it is your responsibility to determine that the PACE model is applicable to your design. At a
minimum, you should ensure that the technology node is the same as the one used to create the
PACE model.
• Do not use the 'SetClockBuffer' command with a PACE model. This command is ignored completely.
Warning 'ENG-159' is issued if 'SetClockBuffer' is specified with a PACE model file when performing
a power analysis:
ENG-159: All SetClockBuffer command(s) in clock file foo.clk are
being ignored. Since clock power estimation is performed
using PACE file (aka power_tech_file).
• Do not specify the 'SetCellDefaultFanout' command as it has no effect when used with PACE
models.
• The following additional options are available to calibrate clock tree inferencing using the PACE
model:
– To infer inverter cells based clock tree, use:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 477
Generating and Using PACE Technology Files
– To infer balanced buffers with same rise and fall slew, use:
pa_set pace_use_balanced_clock_buffers true
• Log File
PACE-related messages appear in the respective ('CalculatePower'/'ReducePower') log files.
• Report Files
Several additional sections are added to the report files while using a PACE model. For example,
if buffers are identified while using a PACE model, the report file has PACE explicitly identified,
as in the following sample output:
PACE Inferred Buffer Tree:
Net name : top.clk_2_0
Driver instance: top.U_2_0
Frequency : 100MHz
Number of Loads: 16
PACE Root Driver :
Cell : BUFX12
Library : typical
Count : 1
Cell maximum fanout : 8
Buffer power: static 1pW; dynamic 32.5uW
Fanout capacitance: wire 217fF; pins 17.4fF
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
478 of ANSYS, Inc. and its subsidiaries and affiliates.
PACE Technology Migration
In some cases, when a PACE model generated with an older version of PowerArtist is incompatible with
a newer version of PowerArtist, it can report inaccurate results that can be difficult to identify. To resolve
this issue, the following warning will be issued to report a version mismatch:
Warning UTL-246 : There is a version mismatch between PACE version
'1.0' and the supported version '1.1'. Regenerate the PACE model
using current release version of 'PowerArtist/XP 18.1.1'
In addition to the warning, the message includes a recommendation to regenerate the PACE model for
improved results. The warnings appear on the standard output and the logs generated during power
analysis (CalculatePower) and power reduction (ReducePower).
The 'reportPaceInfo' utility is enhanced to print the version information from the PACE model file.
PACE models generated prior to the 18.1.1 release are regarded as version '1.0' and are backward
compatible. They are read and a warning is issued, which includes a recommendation to regenerate
the PACE model. The version of PACE model generated with 'PowerArtist 18.1.1' is '1.1'. This is updated
to '1.5' in 'PowerArtist 2021R2.1'.
The version information of a scaled PACE model (generated using the utility 'paceScaleCaps'), is the
same as the input PACE model.
If you used older technology PACE models on a newer technology node, the power estimation during
RTL power analysis would be inaccurate compared to their respective gate-level power numbers.
To reuse the older technology files, such as 5nm cell models, on designs for a newer technology node,
such as 3nm, the PowerArtist tool now introduces the pa_set variable perform_tech_migration.
Inputs
First, you must re-generate library files based on newer technology.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 479
Generating and Using PACE Technology Files
The following inputs are required to enable the technology migration in PACE-based power analysis
flow:
By default, the flow is disabled, which means the pa_set variable is false.
2. The following elements constitutes complete technology migration:
• Capacitance Scaling
• Cell Migration
To ensure cap scaling, you must provide old as well as new technology files, using the following
pa_set variables:
pa_set tech_file_for_older_process_node <old_tech_file name>
3. To improve the accuracy of technology migration, you can define attributes which help identify
unique cell patterns for cell mapping. Use the 'DefineTechMigrationPatterns' command with the
following attributes:
DefineTechMigrationPatterns
–source_cell_drive_strength <>
-target_cell_drive_strength <>
–source_cell_vt_group <>
-target_cell_vt_group <>
–source_cell_func <>
-target_cell_func <>
4. Use the DefineTechMigrationVTMapping command for more accurate cell mapping for different
cell function types during TechMigration:
DefineTechMigrationVTMapping -source_cell_vt_group <>
-target_cell_vt_group <> -pace_cell_function_type <>
The command is used to map the source VT group cells to the missing target VT group cells.
DefineTechMigrationVTMapping also supports the function type pattern matching to filter out
the potential mapping cells having same cell function type pattern as that of given source technology
cell.
For example, consider the source technology node as 5nm and target technology node as 3nm. You
can map the VT group cells which are available in source (5nm) PACE file but not in target (3nm)
PACE file to ones which are present in 3nm, but not in 5nm PACE files.
Outputs
When technology migration is enabled in SPEF flow, a migrated PACE file is generated with the name
migratedPace.tech in a sub-directory tech_migration_work.
By default, the tool uses this new PACE file instead of the older PACE file for power analysis.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
480 of ANSYS, Inc. and its subsidiaries and affiliates.
Performing Correlation Studies
• pacePlotCapTables
• pacePlotEstimatedCapTables
• paceScaleCaps
• reportPaceInfo
See the section titled 'PACE Query Commands' in the PowerArtist Reference Manual for complete details
of these utilities.
• Use the 'SetClockNet -frequency' command for every clock net in the RTL design.
• When you specify the '-frequency' option, frequency-based cell selection is initiated, which is
orthogonal to mixed VT designs. In the PACE flow, frequency-based cell selection is disabled, by
default. To enable frequency-based cell selection, specify the following 'CalculatePower' option:
-domain_frequency_cell_selection true
• Pin-based analysis is the default for gate-level analysis. The same type of analysis must be done
for both gate and RTL. To disable arc-based estimation for your RTL design, specify the following
'CalculatePower' option:
-arc_based_estimation false
• Set the following to allow ICGCs to drive buffers rather than duplicating ICGCs that then drive
register clocks directly:
SetClockGatingStyle -structure branch
• Disable the 'dont_use' attribute for your clock buffers and ICGCs in your Liberty files by setting
the following environment variable:
setenv PT_PACE_CLK_DONT_USE false / -honor_dont_use_for_clock_tree false
By default, PACE models honor the 'dont_use' attribute on clock buffers and clock gating cells.
• Do not use the 'SetCellDefaultFanout' command. It changes the 'max_fanout' of all ICGC cells
in the library along with other cells and adversely impacts ICGC cell selection.
• Do not use the '-hierarchy' and '-instance' options of the 'SetClockNet' command with the
'-gate_clock yes' option while doing a correlation exercise. The options may change the
number of ICGCs inserted depending on how an enable signal is split in the hierarchy.
Note: While performing correlation exercises to understand and evaluate PACE models, do not use
a PACE model that includes only capacitance models.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 481
Generating and Using PACE Technology Files
This allows you to correlate the PACE clock network distribution model to an actual distribution
network.
• In the first (default) method, PowerArtist attempts to map as many flip-flops to MBFFs as possible
and reports the percentages through the following message:
Note ENG-951 : MBF mapping performed for <x>% register bits based on RTL
even though the MBF mapping in PACE was <y>%. To apply the
MBF mapping threshold from PACE, use 'pa_set
pace_enable_multibitcell_mapping_threshold true'
• In the second method, the % of flops to be mapped to multi-bit flip-flops (MBFF) is derived from
the PACE cell model and applied during cell selection in RTL power analysis. This helps with
predictable RTL power accuracy compared to the reference gate design. Use the following variable
to enable this method:
pa_set pace_enable_multibitcell_mapping_threshold true
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
482 of ANSYS, Inc. and its subsidiaries and affiliates.
Using Incremental VT Settings for Cell Assignment/Selection
1. Use the 'WriteTechnologyFile' command to generate PACE models for different blocks in the
design.
2. Use the 'MapTechnologyFile' command during power analysis to apply PACE models to specific
blocks in the design. The syntax is as follows:
MapTechnologyFile -file <pace_model_path> \
-instance <hierarchical_instance_path>
• You can use multiple 'MapTechnologyFile' commands to map different PACE models to different
hierarchies in the design.
• The 'MapTechnologyFile' command specified for a lower-level design hierarchy overrides the
'MapTechnologyFile' command specified at higher-levels in the design hierarchy.
• If two or more 'MapTechnologyFile' commands are specified for the same instance hierarchy,
the one appearing later overrides the 'MapTechnologyFile' command specified earlier.
• The PACE model file specified using the 'CalculatePower -power_tech_file <filename>'
command is used as the default PACE model for the top- level design. This file is overridden if
a 'MapTechnologyFile' command is specified for the top-level design.
The hierarchical PACE models work for capacitance estimation and cell selection. The clock models are
derived only from the PACE model applied to the top module of the design. For cell selection, it can
be controlled by generating and applying individual PACE models at different hierarchical levels. This
enables better correlation for blocks with different design characteristics and constraints.
Note: The 'MergeTechnologyFiles' command does not support merging already merged PACE files.
This feature (to use incremental VT settings) is enabled through the following two enhancements:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 483
Generating and Using PACE Technology Files
The power analysis and reduction flows support multi-VT overrides to the PACE cell models at
various design hierarchies and/or functional categories with two different methodologies:
Uses library cell information from the PACE cell model but overrides the multi-VT
distribution captured in the PACE model with user-specified 'SetVT' values.
Uses the 'SetVT' methodology when same libraries with the same voltage threshold
groups are used for RTL and representative gate designs.
Overrides library cell information and multi-VT distribution from the PACE cell models
with user-specified 'SetVoltageThreshold' and 'SetVT' values.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
484 of ANSYS, Inc. and its subsidiaries and affiliates.
Using Incremental VT Settings for Cell Assignment/Selection
1. Specify annotated standard cell libraries used by the representative gate design. Annotate the
standard cells one of the following three methods:
• Annotate voltage threshold group information on the standard cells using Synopsys'
Library Compiler™ library level voltage threshold attribute:
default_threshold_voltage_group : "string";
• Annotate voltage threshold group information on the standard cells using Synopsys'
Library Compiler™ cell-level voltage threshold attribute:
threshold_voltage_group : "string";
• Annotate voltage threshold group information on the standard cells with user-specified
'SetVoltageThreshold' command:
SetVoltageThreshold -group LOW_VT -pattern {*L}
SetVoltageThreshold -group HIGH_VT -pattern {*H}
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 485
Generating and Using PACE Technology Files
4. Specify the required inputs to the 'WriteTechnologyFile' command to generate the PACE
model:
WriteTechnologyFile <options>
5. Run the 'reportPaceInfo' command to view a summary of the information captured in the
PACE technology file:
reportPaceInfo <options>
The 'WriteTechnologyFile' command uses the following precedence rules to determine the association
of a VT group with a standard cell when multi-VT attributes are provided using the different methods
shown in the table below:
1. Use the 'reportPaceInfo' command on the generated PACE technology file to obtain voltage
threshold groups and their distribution:
reportPaceInfo -in pace.tech
reportPaceInfo -in pace.tech -out pace.info.out
2. Ensure that the voltage threshold annotations of input libraries match the PACE technology
file design voltage threshold groups.
3. Specify mixed-VT distribution to use for RTL analysis with the SetVT command:
SetVT -mode percentage -instance {top.block1 top.block2} -vt_group {HVT:70 LVT:30}
SetVT -mode percentage -type {mux} -instance top -vt_group {HVT:50 LVT:50}
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
486 of ANSYS, Inc. and its subsidiaries and affiliates.
Using Incremental VT Settings for Cell Assignment/Selection
1. Use the 'reportPaceInfo' command to obtain voltage threshold groups and their distribution:
reportPaceInfo -in pace.tech
reportPaceInfo -in pace.tech -out pace.info.out
2. Specify annotated standard cell libraries for RTL analysis with some/all voltage threshold groups
different from the PACE technology file voltage threshold groups. Annotate the standard cells
using one of the following three methods:
• Annotate voltage threshold group information on the standard cells using Synopsys'
Library Compiler™ library-level voltage threshold attribute:
default_threshold_voltage_group : "string";
• Annotate voltage threshold group information on the standard cells using Synopsys'
Library Compiler™ cell-level voltage threshold attribute:
threshold_voltage_group : "string";
• Annotate voltage threshold group information on the standard cells with user-specified
SetVoltageThreshold command:
SetVoltageThreshold -group SLVT -pattern {*SLVT}
SetVoltageThreshold -group RVT -pattern {*RVT}
3. Specify multi-VT distribution to use for RTL analysis with the SetVT command:
SetVT -mode percentage -instance {top.block1 top.block2} -vt_group {SLVT:40 RVT:60}
SetVT -mode percentage -type {mux} -instance top -vt_group {SLVT:30 RVT:70}
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 487
Generating and Using PACE Technology Files
RTL analysis and reduction flows use the precedence rules from Table 2 (p. 488) and Table 3 (p. 488) for
user-specified VT group overrides:
Outputs
The following reports are updated to indicate user-override:
• PACE Report
The report generated by the 'reportPaceInfo' command provides summary information about
the PACE technology file and includes two new sections for VT-groups. A sample report is shown
below:
<snip>
VT GroupName: HIGH_VT
Cell Pattern: *H
...
...
<snip>
Mixed-Vt Distribution:
----------------------
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
488 of ANSYS, Inc. and its subsidiaries and affiliates.
Using Incremental VT Settings for Cell Assignment/Selection
The sort order of the 'VT Group Name' column in the 'Mixed-Vt Distribution' section of the report
is as follows:
– User Specified VT in descending order
– Library Specified VT in descending order
– PA_defaultVT
The 'Mixed-VT Cells Distribution' section of the average power report prints the 'VT group'
information under the 'VT Group Name' column when available. A sample report is shown below:
8. Mixed-VT Cells Distribution
==============================
top
Flop
SEQSDFFRQX1MTH HIGH_VT 41.1765 628
SEQSDFFQX1MTH HIGH_VT 41.1765 46
SEQSDFFQX1MTL LOW_VT 17.6471 19
---------------
Total 693
Inverter
SEQINVX12MTL LOW_VT 30.003 6
SEQCLKINVX1MTH HIGH_VT 23.3323 9
SEQCLKINVX16MTH HIGH_VT 23.3323 10
SEQCLKINVX12MTH HIGH_VT 23.3323 10
---------------
Total 35
Mux
SEQMX2X1MTH HIGH_VT 70 808
SEQMX2X2MTL LOW_VT 30 1
---------------
Total 809
Nand
SEQCLKNAND2X2MTH HIGH_VT 70 499
SEQCLKNAND2X2MTL LOW_VT 30 161
---------------
Total 660
Xor
SEQXOR2X1MTH HIGH_VT 70 318
SEQXOR2X1MTL LOW_VT 30 136
---------------
Total 454
Full Adder
SEQADDFX4MTH HIGH_VT 23.3323 8
SEQADDFX2MTH HIGH_VT 23.3323 7
SEQADDFX1MTH HIGH_VT 23.3323 7
SEQADDFX4MTL LOW_VT 15.0015 0
SEQADDFX2MTL LOW_VT 15.0015 0
---------------
Total 22
Rest of the Models
---------------
Total 0
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 489
Generating and Using PACE Technology Files
The cell selection report prints the 'VT group' information under 'VT Group' column when available.
A sample report is shown below:
Cell VT Group Function Class Occurrence
DP256x32 - Memory - 8
DP512x32 - Memory - 12
SEQPIC - Buffer - 150
SEQPOC8A - Buffer - 137
<snip>
• Messages
Several new warnings (UTL-259, UTL-260, UTL-261, and ENG-956) and notes (UTL-262, FFR-127,
and ENG-955) are added to improve usability and enable easy debugging. A sample message
is shown below:
Warning UTL-259 : PACE model cells are missing from the libraries. For more accurate
analysis, specify the libraries containing these cells:
M8SDFRB1
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
490 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 19: Advanced Buffer Modeling in PACE
19.1. Introduction
The advanced PACE buffer models provide information related to design constraints, that must be
satisfied by the RTL design and buffer cells, to be used during buffer tree synthesis. Thus, the models
ensure that all RTL instances meet PACE captured design constraints by inserting enough buffers and/or
inverters.
You can configure additional options to differentiate power management cells such as isolation buffers,
level shifters, always-on buffers, power switches and physical cells such as filler, decap, well tap and
antenna cells from buffers used for high fanout net buffer tree synthesis, hold fixing and delay fixing.
Categorization of buffers with library attributes and pa_set variable configuration ensures data integrity
for PACE buffer and repeater models.
Chapter Organization
The following topics are covered in this chapter:
1. Specify the power management cells and physical cells used in the gate netlist using
appropriate pa_set commands enumerated under Appendix I : Auxiliary Commands and
Recommendations for PACE Buffer Categorization (p. 494).
For example;
#sample pa_set commands for buffer categorization
pa_set pace_clock_cells { CK* }
pa_set pace_clock_isolation_cells { CKLI* }
pa_set pace_clock_level_shifter_cells { CKLV* }
pa_set pace_level_shifter_cells { LVL* }
pa_set pace_isolation_cells { IS* }
pa_set pace_antenna_cells { ANTENNA* }
pa_set pace_filler_cells { *FILL* }
pa_set pace_welltap_cells { TAPCELL* }
pa_set pace_always_on_cells { PT* }
pa_set pace_hold_buffer_cells { DEL* }
pa_set pace_switch_cells { HDR* }
pa_set pace_decap_cells { GDCAP* }
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 491
Advanced Buffer Modeling in PACE
2. To generate PACE buffer and repeater model, use the following highlighted options:
pa_set generate_pace_model_category {cap clock cell buffertree repeater}
b. Pre-configured instance name patterns using the pa_set commands mentioned in the
Instance Names of Appendix I : Auxiliary Commands and Recommendations for PACE
Buffer Categorization (p. 494). Instance names support wild card character *.
c. Pre-configured library cell name patterns using the pa_set commands mentioned in the
Library Cell Names of Appendix I : Auxiliary Commands and Recommendations for PACE
Buffer Categorization (p. 494). Library cell names support wild card character *.
4. To view the result summary for the PACE buffer and repeater models, use the following
command:
reportPaceInfo -in <pace-technology-file> -out <output-filename>
2. Specify the PACE models to use for RTL analysis or reduction, using the following command:
pa_set use_pace_model_category {cap clock cell buffertree repeater}
3. Delete or comment out any existing SetHighFanoutNet commands, such as the following:
#SetHighFanoutNet -fanout 20
4. Delete or comment out any existing SetMaxFanoutNet commands, such as the following:
#SetMaxFanout -type logic -fanout 20 -instance *
The SetMaxFanout command overwrites the PACE buffer and repeater model design
constraints used during buffer tree synthesis.
5. Use the generated PACE technology file with the 'CalculatePower' or 'ReducePower' command
to perform power analysis or power reduction respectively:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
492 of ANSYS, Inc. and its subsidiaries and affiliates.
Introduction
19.1.3. Data Visualization and Debugging for PACE Buffer and Repeater
Models
The power analysis, reduction flows, and PACE generation reports are updated to provide buffertree
and repeater model.
• Buffer cells
• Physical/Power management cells
19.1.4. Limitations
The PACE buffer and repeater has following known limitations:
2. No inference for HOLD buffers. Hold buffers are handled by Timing-Aware feature of PowerArtist.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 493
Advanced Buffer Modeling in PACE
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
494 of ANSYS, Inc. and its subsidiaries and affiliates.
Introduction
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 495
Advanced Buffer Modeling in PACE
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
496 of ANSYS, Inc. and its subsidiaries and affiliates.
Introduction
Category Cell Type Liberty Attribute Can the tool Must to Reason
recognize/honor specify?
Liberty
Attribute?
Physical pace_filler_cells is_filler_cell {true/false} No No *Pure
pace_decap_cells is_decap_cell {true/false} No No physical
cells do
pace_welltap_cells is_tap_cell {true/false} No No not
pace_antenna_cells antenna_diode_type No No contain
buffer or
{power/ground/power_and_ground} inverter
logic.
Hence,
they do
not
pollute
the IBP,
Buffer
modelling,
or
synthesis.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 497
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
498 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 20: Design-specific PACE
20.1. Introduction
PACE models have traditionally contained a set of statistics calculated from a gate-level design that are
applied to cell assignment and wire capacitance estimation for similar RTL designs. Statistical cell
distribution provides accurate distribution for VT. However, cell sizes at top level, hierarchical cell
distribution, and instance-to-instance mapping between RTL and gate may differ, leading to a mismatch
between RTL and gate power.
Design-specific PACE is an enhancement that aims to maximize RTL power accuracy for register and
clock power using exact instance-to-instance cell mapping between RTL and gate. This is achieved by
analyzing a gate-level design and creating a model with data for each individual register. Then, the
registers in the corresponding RTL design are matched to the gate-level registers and the corresponding
data is assigned to them. Currently, this data includes the cell type, input slew, and output capacitance.
Chapter Organization
The following topics are covered in this chapter:
• To use the model for power analysis of the corresponding RTL design, use the following command:
pa_set use_pace_model_category design
You can generate and use other categories ('all', 'cap', 'cell', or 'clock') with 'design', though the
category 'cell', is automatically included when 'design' is specified.
See the PowerArtist Reference Manual for complete details of the above variables.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 499
Design-specific PACE
Each function must also be registered using the 'RegisterGateTransform' command in the same file.
Review the following file for examples:
$POWERARTIST_ROOT/lib/tcl/NameTransformer/defaultTransforms.tcl
Note: The file 'defaultTransforms.tcl' is used if you do not specify any other file.
• Multi-bit instance names are automatically split before they are given to the Tcl functions if they look
like the following:
top.a[1:0]
MBIT_top_a_reg_1_MB_top_a_reg_0_
– RTL name:
top.c[2:0]
Then, the variables to specify the strings are as shown in the example below:
pa_set pace_multibit_delimiter "AND__AND"
pa_set pace_multibit_prefix "MBIT_"
• In case the top-module of RTL and PACE model are different, the gate-level instance matching RTL
top module is specified using the 'pace_top_instance', as shown in the following example:
Example: If the RTL and gate instances are named as:
– Gate top module:
top_wrap
Then, the gate instance corresponding to the RTL top module 'top_wrap.u_top' is defined as:
pa_set pace_top_instance top_wrap.u_top
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
500 of ANSYS, Inc. and its subsidiaries and affiliates.
Name Map File
Format
The cell mapping file is a text file with two columns. In this file, the left column specifies the register
name(s) and the right column specifies the cell type. If multiple register bits are specified, then the
given single-bit cell are assigned to each bit. Specific bits and ranges of bits can be selected, as shown
in the example below:
top.a.R1[7:0] DFF1BIT
top.a.R2[1:0,3:5,7] DFF1BIT
You can combine separate register instances in a single line using Verilog-style concatenation with curly
braces, as shown in the example below:
{top.a.R1, top.a.R2} DFF1BIT
Multi-bit register cells can also be used in the file. The number of RTL register bits specified on lines
with multi-bit cells, though, must exactly match the width of the cell, as shown in the example below:
top.a.R1[1:0] DFF2BIT
Limitation
If a cell is several bits wide, then the number of register bits must match the width of the cell.
So, using map files, such as those used by designers to map the RTL names to the gate-level names to
properly annotate activity data on the gate-level elements, is a more accurate and simple solution.
The mapping file is generated by using the 'SetNameMapFile' command, which specifies the path and
format of a file (that shows exactly which activity waveforms correspond to which gate-level elements).
The file is in 'pt' format, which is PowerArtist's proprietary format that consists of 'remap' commands.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 501
Design-specific PACE
The map file specified using the '-map_file <map_file_path>' option should contain
only basic 'remap' commands that specify RTL names (with the '-from' option) and gate-level
names (with the '-to' option), as shown below:
remap -from <rtl-name> -to <gate-level-name>
For gate-level names, specify nets, instances, or pins. For RTL names, specify only nets.
2. The map file is used during RTL power analysis if a design-specific PACE model is applied.
If the given file is valid and conforms to the 'pt' format, then it is the first source of mapping
information used during PACE application. Then, PowerArtist attempts to map any remaining
unmapped RTL instances using Tcl transformation functions, if they are given. If that fails for
any instances, then they are modeled using the generic PACE statistical model.
By analyzing these files you can improve the naming rules in the transforms file to enable mapping
of unmapped flops.
The percentage of RTL registers that were successfully matched to gate-level registers are reported
in the log file as message 'ENG-907' and the percentage of unmatched registers are reported as
'ENG-906'. The higher the number of matched registers, the more accurate the power analysis results
are. Ansys recommends aiming for a match percentage of 90% or higher.
2. Generate Cell Mapping Information from PDB
You can create a cell mapping file using the 'mapRegisters' command. The command maps cells to
RTL registers for a gate-level design.
Limitations
• Data is currently collected and assigned only for flip-flops.
• Non-scan and scan flip-flops cannot be mixed.
• Unmatched flip-flops in the RTL design are not automatically assigned to multi-bit flip-flop cells.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
502 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 21: Generating an RTL Power Model
21.1. Introduction
The design of the power delivery network (PDN) is critical for the successful and timely implementation
of SOCs. A badly designed PDN adversely affects functionality if timing errors occur due to excessive
voltage drop across supply rails. Longer term power grid failures occur due to electro-migration (EM).
Package selection must be done early on in development but if done badly leads to high voltage drop
due to inductive effects. As the chip moves into the sign-off phase, the designer needs to stress the
PDN with realistic worst-case vectors. However, the impracticality of running gate-level simulation means
that the availability of simulation vectors is almost non-existent.
Many of these problems can be mitigated by gaining early visibility into the expected power and current
profile of the design, and during sign-off being able to select (with confidence) realistic worst-case
stimulus with which to stress the PDN. The RTL Power Model (RPM) is a technology that allows you to
capture realistic worst-case vectors at the RT level of abstraction along with other key parameters that
affect the power grid.
Chapter Organization
The following topics are covered in this chapter:
• Early in the design flow when block-level layouts are not available
• Late in the design flow when blocks have been placed and routed
• Various combinations of the above stages, including blocks of third-party IP
Another benefit of this flow is that it becomes possible to create a Chip Package Model (CPM) early on
in the design flow to facilitate early package selection. Using data available during the RTL design stage,
PowerArtist generates an RPM. RedHawk consumes the RPM, even with early layout data, to generate
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 503
Generating an RTL Power Model
a CPM, which is a spice-accurate chip PDN model. The CPM is then used with package models for early
chip-package co-design. The flow is shown in the following figure:
A key technology in RPM is the ability to do fast power based selection of worst-case PDN events from
many thousands of RTL simulation cycles. The current implementation supports two worst-case events:
This event is selected when the average power is also high. When RedHawk analyzes this event, it
can determine the robustness of the power grid. This allows you to determine, for example, whether
there are enough decaps or whether the grid is wide enough.
This type of event causes chip and package inductance to ring, which causes the supply voltage to
collapse beyond the design tolerances.
The peak power and di/dt events are captured in a 'frame', where a 'frame' is a window of twenty
cycles of the dominant clock centered around the critical event clock cycle. The dominant clock is the
clock that encompasses 90% of the average power in the design and is automatically determined by
the tool.
RPM can be used both for early PDN analysis (when layout data is not available) and simulation
vector-based PDN analysis for the identified peak or di/dt frames (when layout data is available).
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
504 of ANSYS, Inc. and its subsidiaries and affiliates.
The RPM Flow
1. RTL inferencing
3. RPM generation
1. Read the RTL using the 'Elaborate' command. This builds the scenario file that is required by all
subsequent steps.
2. Perform data validation steps to ensure a high probability of success for generating the RPM.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 505
Generating an RTL Power Model
Perform a single RTL interval time-based power analysis using 'CalculatePower -analysis_type
time_based' to generate quick power analysis results over a small simulation window. Examine
the power analysis results to see if they look reasonable. By performing this step, you can reveal
problems such as:
• missing technology libraries or cells for functions like memories
• poor or missing wireload models
• missing or incorrect clock definitions
• missing power-aware constraints that set parameters like your mixed VT percentages, define
your power domains or define your virtual supplies.
3. Generate the RPM using the 'CreateRPM' command with almost the same options as used for a
time-based power analysis run.
Note: You do not specify the '-reference_clock' option to the 'CreateRPM' command as it
automatically determines the correct analysis clock.
1. Determines the parasitic capacitance associated with the nets in your design as well as counts of
all the cells that are used during the time-based power analysis of your design.
2. Performs a rapid power-based frame selection that identifies the di/dt and peak power frames.
3. Creates the RPM. The RPM is actually a directory with the 'rpm_model_name' you specified. You
can copy this directory anywhere you need to, but you must not alter the contents.
Syntax
rpminfo -r <rpm_filename>
This command generates an xgraph format file of the form 'frame.xg' for each frame in the RPM. You
can then view these files in the PowerArtist Waveform Viewer, xgraph, or gnuplot (version 4 or later).
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
506 of ANSYS, Inc. and its subsidiaries and affiliates.
Fast Power Profiling
The power profile is saved to an '.fsdb' file and can also be saved to a 'text' file for further processing
with custom scripts. A moving average profile is also calculated and saved to the same files. The moving
average is calculated over the most recent N-samples, where 'N' defaults to 10% of the analysis window.
Note: The 'ProfilePower' command can be run on gate-level and RTL designs.
See the PowerArtist Reference Manual for complete details of the 'ProfilePower' command.
Honoring the variable 'pa_set reference_clock <clock_name>' during power profiling can
change the power waveforms that are generated by the 'ProfilePower' command.
This creates profile and average plots for each non-zero voltage supply to the fsdb file and the text
file (if the latter is requested). This feature is also used by ANSYS CMA (Chip Model Analyzer) for power
delivery network analysis of the chip, package, and system (CPS).
Note: The text file's header is easier to parse with a script and is of the following form:
# Version 1
# 0 Time 1e-09
# 1 Profile Total
# 2 Average Total
# 3 Profile {vdd_1} 1
# 4 Average {vdd_1} 1
# 5 Profile {vdd_1.1} 1.1
# 6 Average {vdd_1.1} 1.1
100 6.44061e-11 6.44061e-11 0 0 6.44061e-11 6.44061e-11
200 7.1208e-11 7.1208e-11 0 0 7.1208e-11 7.1208e-11
...
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 507
Generating an RTL Power Model
The first line of the header defines the version id so that future changes to the format are handled
more efficiently. The remaining header lines describe the data of the body (on a per column basis).
For example, '# 0 Time 1e-09' indicates that 'column 0' reports time in units '1e-09' and '# 3
Profile {vdd_1} 1' indicates that 'column 3' is the profile of supply name 'vdd_1', which has a
voltage of '1v'.
Note: The tcl hard quote braces protect against supply names containing non-alphanumeric
characters.
2. The body of the file consists of data lines that begin with a non-# character.
'ProfilePower' performs power profiling across 'N' time-split '.fsdb' files. In this flow, the first
activity file is specified using the 'activity_file' option, and the index of the last '.fsdb' file
to process is specified using the '-to_fsdb_index' option. 'ProfilePower' then looks for FSDB
files of the form '<activity_file>_000N.fsdb', invokes an analysis on all of the files of this
type across the number of processes requested, and then combines the resulting profile FSDB's
into a single FSDB.
'ProfilePower' allows indexed FSDB file names to contain multiple dot separators, such as
'foo_001.hw.fsdb'. The index portion of the name must appear at the end of the string before
the first dot.
'ProfilePower' splits the specified 'activity_file' into 'N' windows, where 'N' is the number of
CPU's requested, invokes an analysis on each window, and then combines the resulting profiles
into a single profile.
Notes:
• The script you specify for LSF/UGE operation is slightly different from the parallel time-based
flow. An example script for UGE is shown below:
#!/bin/sh
qsub -V -b y -cwd -j y -q sjo_all_hosts -sync y -S /bin/sh "$@"
exit $?
Note: The script should not return the UGE exit code directly but via the 'exit' command.
• Under some circumstances, the profile that is stitched together from the multiple analyses
might not be the same as a profile generated over the full simulation window, that is you
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
508 of ANSYS, Inc. and its subsidiaries and affiliates.
Fast Power Profiling
might see some glitches at the boundaries. This happens when clock cycles overlap the
sub-window boundaries. When this happens 'ProfilePower' does not know what toggle activity
is happening in the part of the clock cycle before the start time of the requested window so
cannot fully account for the power contribution in that cycle. Thus, the power for that cycle
is low. 'ProfilePower' issues a warning when it detects this situation.
This flow is called the calibration flow and is enabled by using the following variable:
pa_set profile_calibration_file <filename>
If the file specified with the variable does not exist, 'ProfilePower' writes calibration data to it and
calibrates the profile. If the file exists, it is used to calibrate the profile. If per supply profiles are
requested current profiles are also generated.
or
DefineGroup <group_name> <instance_path>
MonitorInstances -group <group_name>
Notes:
• If the instance you specify is small in size, the resulting profile is likely to be wrong.
'ProfilePower' issues a warning if it detects this situation.
• 'ProfilePower' attempts to use the clock you specify with 'reference_clock' but if that
clock does not connect to the monitored instance, it tries to select one that does.
Inputs
1. Use the 'MonitorInstances' command to enable support for hierarchical power:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 509
Generating an RTL Power Model
For hierarchical power profiling to generate meaningful results, hierarchical instances with
small number of leaf-level instances are ignored. Use the following variable to change the
leaf-level instance count '%' threshold value:
% pa_set profile_leaf_instance_threshold <integer>
The default value of this variable is '5' and it represents the percentage of leaf-level instances
(of the total leaf-level instances in the design). If none of the hierarchies specified with the
'MonitorInstances' command meet the threshold value criteria, power profiling is performed
on the top module only.
• Or, specify instances using the 'MonitorInstances -levels' option as shown below:
MonitorInstance -name <inst_name> -levels <integer>
Note: The option '-levels all' is not supported and the warnings 'TBE-240' or 'TBE-241' are
issued.
Outputs
The following files are generated after successful power profiling:
• FSDB File
An FSDB file containing the waveforms for all hierarchical instances is generated. By default,
the file is saved as 'profile.fsdb'. Use the following variable to specify the name of the
file:
% pa_set profile_fsdb_file <filename>
You can view the waveform by loading 'profile.fsdb' in the 'Signal Viewer'. A sample
waveform is shown below:
Note: The instance name is prepended to the signal names in this waveform.
• Text File
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
510 of ANSYS, Inc. and its subsidiaries and affiliates.
Fast Power Profiling
A text file containing the data for all hierarchical instances is generated when the following
variable is specified:
% pa_set profile_text_file <filename>
The data for each hierarchy is separated into sections where each section has the following
start and end markers:
$start <hierarchical_instance_name>
<profile data>
$end <hierarchical_instance_name>
• Additional Warnings
Warnings 'TBE-240' and 'TBE-241' are issued when an unsupported option is used. And warning
'FFR-126' is issued if PowerArtist detects one or more empty (with only constant and connect
nets) hierarchies.
Examples
• Example 1: In this example, a profile is generated for all instances that are '2' levels below
'top.core1':
MonitorInstance -name top.core1 -level 2
• Example 2: In this example, a profile and a text file are generated for instances 'top' and
'top.core':
MonitorInstances -name {top top.core1}
pa_set profile_fsdb_file test.fsdb
pa_set profile_text_file profile.txt
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 511
Generating an RTL Power Model
Limitations
• The memory usage may increase as the number of levels of hierarchies and number of instances
to process, increases.
• The waveforms generated for power profiles of hierarchical blocks with less than 10K nets may not
match the waveforms generated for the same peak points by time-based power analysis. Warning
'TBE-208' is reported for such blocks.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
512 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 22: Analyzing Static Power Efficiency
22.1. Introduction
PowerArtist static power efficiency checks enable design analysis early in the RTL development cycle
before simulation vectors or technology specific Liberty models are available. These checks identify
power-inefficiencies in the RTL spanning sequential elements, datapath logic, and memories that can
potentially lead to wasted power in the design. Glitch power consumption is a growing concern in
smaller geometries and the static checks include identification of RTL code that is potentially glitch-prone
for early visibility and action. Static power efficiency metrics serve as an effective check to qualify RTL
check-ins as a part of a regression flow. A regression-based check of RTL check-ins ensures any hidden
power bugs are caught and addressed early in the design development flow.
Chapter Organization
The following topics are covered in this chapter:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 513
Analyzing Static Power Efficiency
– Ungated memories
– Memories driving observability elements (Memory ODC conditions)
• Glitch Analysis Checks
– Analyze timing impact of clock gating:
Too many XOR based clock enables
Clock enables with large depth cone
– Identify glitch prone elements such as unregistered ALUs (adders & multipliers) with
unbalanced input logic paths
The figure below shows the inputs and commands to enable the flow:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
514 of ANSYS, Inc. and its subsidiaries and affiliates.
Reports
22.5. Syntax
The syntax to enable static power efficiency checks is given below:
AnalyzeStaticEfficiency
-power_db_name <filename>
-log <filename>
-static_efficiency_write_power_db <true | false>
Options
-power_db_name <filename>
User-specified power database (.pdb) file name that contains the static clock gating data.
-log <filename>
This is true by default and writes out the power database (pdb) after static analysis. PowerArtist
generates the OpenAccess database representation of all the static analysis results. The results can
be accessed using APSH container properties.
Refer to the PowerArtist Reference Manual for details of all the options supported by the command.
22.6. Reports
The command does not generate a formal text report. However, you can generate the following types
of reports:
You can define metrics such as '% gated_flops', '% always_on_gaters' (tied-1 clock enables),
or '% always_off_gaters' (tied-0 clock enables), '% glitchy_alu' to measure static design
efficiency by using PDB properties. Refer Useful PDB Properties for Static Design Efficiency
Analysis (p. 516) for details of the properties added to enable this.
Disclaimer: The clock gating results generated after 'CalculatePower' as compared with those
generated after 'AnalyzeStaticEfficiency' may not match under the following conditions:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 515
Analyzing Static Power Efficiency
PowerArtist performs combinational logic optimization during 'Elaborate' and sequential logic
optimization during 'Elaborate' and 'AnalyzeStaticEfficiency'. The difference is that optimization
during 'Elaborate' is intra-module whereas optimization during 'AnalyzeStaticEfficiency' is
inter-module.
To generate a report of the optimizations performed by PowerArtist, set the following variables:
• Before 'Elaborate':
pa_set elaborate_report_options {optimization module detailed_module}
pa_set elaborate_report_file <elaborate_report>.txt
• Before 'AnalyzeStaticEfficiency':
pa_set logic_optimization_report <report_name>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
516 of ANSYS, Inc. and its subsidiaries and affiliates.
Useful PDB Properties for Static Design Efficiency Analysis
• The 'is_enabled' property detects registers with a recirculating multiplexer. A register with
a recirculating multiplexer is clock gated by PowerArtist and synthesis if it meets the minimum
bit width criteria by itself or after combining with other registers.
Example:
set pin {core1/j1/#r0/dout[0]}
get_property -class pin $pin is_enabled
• The 'cg_enable_depth' property detects the clock enable depth of inferred gaters (this
property does not apply to instantiated clock gates).
Example:
set inferred_gater {core1/j1/#m0}
get_property -class cell $inferred_gater cg_enable_depth
You can also access the property through the column 'enable_depth' in the report generated
by the 'report_cg_efficiency' command.
Example:
report_cg_efficiency -cols {cg_inst enable_depth}
• The 'is_self_gated' property identifies if the register is clock gated using xor-based clock
gating where the input and output bits of a register are xor'd (may be followed by an or gate)
to detect any change in data, and the output of the xor is used as a clock enable.
Example:
set pin {core1/j1/#r0/dout[0]}
get_property -class pin $pin is_self_gated
• The 'is_clock_gated' property identifies if the specified register bit of an inferred register
instance is clock gated. This is different from the 'clock_gated' property, which returns clock
gating type for register instances.
Example:
set pin {core1/j1/#r0/dout[0]}
get_property -class pin $pin is_clock_gated
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 517
Analyzing Static Power Efficiency
• The '-type' option of the 'get_cg_enables' command accepts these values - 'inferred',
'instantiated', and 'inferred_ecg'. When specified, 'inferred_ecg', returns clock-gate enables used
in enhanced clock gating.
The 'is_clock_gated' property described in the Register Clock Gating Efficiency Analysis (p. 517)
section can also be used to detect if memory clocks are gated. ODC-based power reduction
opportunities for memories can be accessed through the 'get_reductions' command. The clock enable
condition can be queried using the 'clock_enable_expr' property of the ODC reduction object
as shown in the example below:
foreach_in_container red [get_reductions -filter {reduction_type == ODC} {*}] {
set inst_name [get_property $red reduction_instance_name]
set cg_expr [get_property $red clock_enable_expr]
puts "Instance Name = $inst_name; ODC expr = $cg_expr"
}
The memory clock port and the net that the enable expression gates can be queried by the
'memory_clock_port' and 'memory_clock_net' attributes.
• The 'unregistered_alu' property returns '1' or '0' depending upon whether an ALU is
unregistered or not. An ALU is considered unregistered if one or more of its inputs are not
driven directly by a register.
• The 'alu_logic_depth' property returns the number of levels of logic between an upstream
register and the input pin of an ALU. The property is available only on the input pins of
unregistered ALU instances.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
518 of ANSYS, Inc. and its subsidiaries and affiliates.
Accessing Memory Output Pins
If the above script is run on a design with the following memory instance:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 519
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
520 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 23: Weighted Toggle Coverage (WTC)
23.1. Introduction
The power grid must be able to supply enough current for peak power scenarios. The quality of simulation
vectors for power and IR drop analysis is critical for power integrity sign-off. Vectors must trigger
worst-case but realistic scenarios for a robust and optimal power grid. Since power grid analysis is
compute-intensive, design companies use varied methodologies to assess multiple vector sets and then
choose a small subset of cycles.
The weighted toggle coverage metrics are used to analyze simulation vector coverage and quality.
These metrics are expected to aid the vector selection process. Using these metrics, vectors with low
toggle coverage on hierarchies and leaf instances can be identified and passed on to verification teams
who can then improve the input vectors.
Chapter Organization
The following topics are covered in this chapter:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 521
Weighted Toggle Coverage (WTC)
Toggle coverage of the instance relative to max coverage of the top module.
Additionally, weighted toggle coverage draws attention to higher power consuming instances by
assigning a power weight to each instance. Power weight of an instance is the highest contribution an
instance can have to total design power.
The 'CalculateToggleCoverage' command can be run right after the design is elaborated and clocks
processed. Either an SDC file or SetClockNet commands with '-frequency' option is required for
clock domain tracing. During clock tracing, all design instances are associated with the traced clock
domain. The clock domain frequency along with cell energy is used to calculate the cell weight for
weighted toggle coverage calculation. The weighted toggle coverage flow infers clock gating to analyze
the impact of clock gating on design activity, but it does not infer clock buffer trees.
The recommended usage for the 'ReadSDC' command flow is shown below:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
522 of ANSYS, Inc. and its subsidiaries and affiliates.
Use Model
ReadSDC -sdc_files {}
-power_db_name <>
-sdc_clocks_mode ideal
-sdc_clocks_gated true
-sdc_clocks_ecg true
-sdc_trace_domain true
-sdc_out_file <>
The recommended usage for the 'SetClockNet' command flow is shown below:
SetClockNet -name <>
-mode <ideal | infer>
-frequency <>
-gate_clock true
-enhanced_cg true
-trace_domain true
To calculate Dynamic and Average toggle coverage, specify the time interval length at which the FSDB
data must be sampled. This is specified by using the following variable:
pa_set interval_size <>
Notes:
If the 'MonitorInstances' command is not specified, a waveform is generated only for the 'top'
module/instance.
Refer to the PowerArtist Reference Manual for complete syntax of the 'CalculateToggleCoverage' and
'MonitorInstances' commands.
Since the weighted toggle coverage flow supports computing the coverage numbers on a per-interval
basis, the following options related to time-based power analysis (CalculatePower -analysis_type
time_based) are also supported with the 'CalculateToggleCoverage' command:
-activity_file <filename>
-default_output_load <float>
-default_transition_time <string>
-frequency_independent_clock_tracing <true | false>
-gate_level_netlist <true | false>
-ignore_toggles_through_x <true | false>
-ignore_toggles_through_z <true | false>
-library_database_dirs <dir list>
-pace_driver_based_cap_model <true | false>
-pace_top_instance <string>
-power_tech_file <filename>
-scenario_file <filename>
-spef_file <filename>
-top_instance <string>
-use_pace_model_category <all | cap | clock | cell | design | cts>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 523
Weighted Toggle Coverage (WTC)
The following options that are not related to power/coverage analysis are not supported:
-cell_selection_report <filename>
-clock_gating_decision_report <filename>
-detailed_vertical_report <true | false>
-distribute_toggles_on_paths <true | false>
-enable_power_normalization <true | false>
-enable_power_per_supply_annotation <true | false>
-enhanced_glitch_analysis <true | false>
-vertical_report_instances <string list>
23.4. Outputs
The command generates text reports and dynamic coverage waveforms and these are explained in the
next sections.
23.4.1. Reports
The following reports are generated:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
524 of ANSYS, Inc. and its subsidiaries and affiliates.
Outputs
Use the following variable to limit the 'type' of instances to include in the 'Detailed'
section of the report:
pa_set coverage_report_detailed_cell_type <hier | leaf | seq | all>
Example:
pa_set coverage_report_detailed_cell_type seq
pa_set coverage_report_file test.rpt
Use the following variable to include only the 'Summary' sections of the hierarchical
instances in the report. You need to provide a list of space-separated hierarchical
instances as input to the variable:
pa_set coverage_report_summary_instances {hierarchical_instance_names}
Example:
pa_set coverage_report_summary_instances {top.m1}
pa_set coverage_report_file test.rpt
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 525
Weighted Toggle Coverage (WTC)
The last row is the instance name for which the 'Summary' section is printed. The values
in this row match the values reported for the instance in the 'Detailed' section.
Use the following variable to limit the 'Detailed' section of the report to specific instances
of interest. You need to specify a list of space-separated hierarchical or leaf-level
instances to include in the report:
pa_set coverage_report_detailed_instances {hierarchical_and/or_leaf-level_instances}
The ITC/GTC numbers are reported only for the specified hierarchical instances. By
default, 'all' the instances are reported.
Example:
pa_set coverage_report_detailed_instances {top.m1 top.m3.myInst top.#c1 top.m2}
– Summary Report
Use the following variable to skip printing the 'Detailed' section of the report:
pa_set coverage_report_skip_detail <true | false>
The default value of this variable is 'false'. This means that you need to set the variable
to 'true' to skip the 'detailed' section of the report.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
526 of ANSYS, Inc. and its subsidiaries and affiliates.
Outputs
Note: To revert to the default report format within the same shell, you need to reset
the values of the above variables. Use the following variable to reset the variable values:
pa_reset <variable_name>
• Dynamic Report
This report can also be generated in .csv format, if 'csv' or 'both' is specified with the
'-coverage_report_format' option.
• Weight Report
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 527
Weighted Toggle Coverage (WTC)
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
528 of ANSYS, Inc. and its subsidiaries and affiliates.
Multiple Time Slices
Report Naming
The reports generated for each simulation window or time-slice specified by 'pa_set
analysis_windows <string_list>' follow these naming rules:
• User-specified Names
You can specify a suffix for the report names. For example, when the following commands are
specified, two reports are generated - one for each time-slice:
pa_set analysis_windows {4us:6us:file1 7us:9us:file2}
pa_set coverage_report_file_name coverage.rpt
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 529
Weighted Toggle Coverage (WTC)
Notes:
• If you do not provide a suffix for even a single simulation window, the other suffixes are ignored
and the default suffix '_slice<window_number>' is appended to all report names.
• The multiple time slices flow is limited to FSDB simulation file format only.
Note: In the waveform, a 'zero' is shown for any duration that is not a part of any window, as is the
case for the duration between '8300000' ps and '8400000' ps.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
530 of ANSYS, Inc. and its subsidiaries and affiliates.
Ignore Initial Transitions from 'X' / 'Z' States
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 531
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
532 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 24: The Streaming (PAVES) Flow
24.1. Introduction
This chapter describes the Siemens Veloce-Ansys PowerArtist Streaming flow, which enables power
analysis for live applications and results in a significant reduction in runtime.
The Veloce-PowerArtist streaming flow provides tighter integration between Siemens Veloce and Ansys
PowerArtist and enables power profiling for live applications from emulation runs and comprehensive
power analysis at RTL and gate-level, and provides high-performance interface by eliminating file-based
inefficiency and saves disk footprint of the tools.
• SAIF may compromise accuracy especially for design with a large number of memories. Forward SAIF
provides a slightly improved accuracy in such cases.
• For most accurate results, full waveform activity provided by formats such as FSDB/VCD is required.
Full waveform also allows power tools to guide users to implement power. Unfortunately due to the
structure of FSDB/VCD, these formats are not an effective solution for emulation, which generally
produce a massive amount of data. VCD in particular, has a very large disk footprint, such that for
any significant size SoC design and for long trace depths, it becomes a non-viable option.
For FSDB, part of this performance slow down is due to the way it organizes the data (optimized for
signal access) and the way power tools analyze the data (time-based access).
So for optimum power analysis performance, an interface is needed that inherently handles data in a
time-based manner.
Chapter Organization
The following topics are covered in this chapter:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 533
The Streaming (PAVES) Flow
• Early RTL power visibility for real-time live applications (such as 1080p video-frames, OS and firmware
boot-up, and GPS applications) by enabling RTL power flow for large vectors.
• High capacity to handle long durations and improved overall performance and efficiency with increased
coverage across test benches and scenarios.
Ansys and Siemens have collaborated to develope a tightly integrated solution using a data streaming
concept between Siemens' emulator Veloce and Ansys' PowerArtist that avoids the conversion of
switching data to and from the FSDB/VCD format. The PowerArtist VEctor Streaming (PAVES) interface
is the first integration of Siemens' Veloce Dynamic Read Waveform API into a power analysis tool and
the result is a significant reduction in runtime.
• Disk Mode
For situations where the Veloce emulator trace uploads are complete. In this mode, data is streamed
directly from the disk-based Veloce data set into PowerArtist without converting it to FSDB.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
534 of ANSYS, Inc. and its subsidiaries and affiliates.
Parallel Analysis in Activity Streaming Flow
• Live Mode
In this mode, Veloce emulator trace uploads overlap with the Veloce wave generation and
PowerArtist GAF generation, which provides additional performance gain.
ProfilePower support is available for the native activity format of the Siemens Veloce emulator.
ProfilePower support in the PAVES flow can be enabled in veloce_disk streaming mode and single
process only. ProfilePower PAVES Flow is available with Veloce 21.0.2 or higher.
Note: Parallel streaming for both the modes is enabled for average power analysis (CalculatePower
-analysis_type average) and vector analysis (GenerateActivityWaveforms).
The next section Parallel Analysis in Activity Streaming Flow (p. 535) explains this in detail.
24.2.2. Benefits
Current early access partners and customers have seen up to 10X runtime performance improvement
with the dynamic API flow in comparison to the file-based flow without compromising accuracy.
• GenerateGAF
• GenerateActivityWaveforms
• CalculatePower -analysis_type <average | time_based>
While this support provides improved runtime and memory performance vis-a-vis the conventional
FSDB/VCD format-based approaches, it has scope for further runtime improvement. Enhancing
PowerArtist's activity processing step (the GenerateGAF command) to generate multiple GAFs in parallel,
is a step in this direction. Multiple parallel processes can analyze activity from different time windows
in an FSDB file providing linear speed-up in the runtime for activity processing.
In this solution, PowerArtist launches multiple processes in parallel for the specified Veloce dataset
activity file, as shown by the following figure:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 535
The Streaming (PAVES) Flow
To enable this flow, use 'ConfigureParallelAnalysis -processes <>' and specify the number of
parallel processes to run, which is limited only by the number of parallel processes that your environment
can support.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
536 of ANSYS, Inc. and its subsidiaries and affiliates.
Environment and Flow Setup
Note: You need to use these options only in the PAVES time-based flow.
Use this variable to specify the veloce wave (.stw dir) instead of the FSDB/VCD file:
pa_set activity_file <veloce_dataset_path>
Note: Ansys recommends regenerating the '.STW' files to prevent errors due to backward
compatibility. Use 'Veloce_v21.0.2' or higher to regenerate the '.STW' files.
Use this variable to set the timeout value (in minutes) for which PowerArtist should wait for activity
streaming data to be available from the Veloce side:
pa_set activity_streaming_timeout <>
Depending on the mode, look for the following note in the gaf logfile:
Note VCD-258: Veloce 'veloce_disk' flow is used for dataset processing
or
Note VCD-258: Veloce 'veloce_live' flow is used for dataset processing
In the PowerArtist environment, the 'top_instance' name is passed with a dot ('.') separated
path for pure Verilog designs and slash ('/') separated path for mixed VHDL/Verilog designs.
PowerArtist identifies the design to be mixed if there are VHDL files present in the elaboration
input file list and converts the hierarchy separator in the 'top_instance' name from '.' to '/'
before invoking Veloce.
In the Veloce environment, if VHDL is not actually instantiated, it treats the design as a pure Verilog
design and expects the 'top_instance' name to be .' separated.
To ensure that this mismatch does not cause any issues, use the following variable to set the
hierarchical separator to '.' or '/':
pa_set activity_streaming_hier_separator <"." | "/">
Refer to the PowerArtist Reference Manual for complete details of the command.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 537
The Streaming (PAVES) Flow
or:
GenerateGAF -gaf_file <file_name>
or:
GenerateGAF -gaf_log <file_name>
• The output files in the time-based power analysis flow are described in section Distributed
Processing in Time-based Power Analysis (p. 272).
• Veloce does not dump all memory signals (MDAs) by default. So you must obtain the missing
signal list from PowerArtist and then enable dumping during Veloce dataset generation. This
limitation can lead to multiple iterations.
• If GAF is killed while streaming data from Veloce, a subsequent PowerArtist run pointing to the
same Veloce dataset sometimes gives an error. The work-around is to delete the file
'.velwavegenInProgress' located in the directory 'dataset' before running PowerArtist
again.
• Multiple runs pointing to the same Veloce dataset cannot be executed at the same time, unlike
FSDB.
• Sequencing of clock versus control ports especially for macros is missing in Veloce simulation
data.
• The PowerArtist/Veloce streaming flow is not enabled for reduction (ReducePower), and rpm
(CreateRPM) flows.
• Multi-process ProfilePower is not supported. ProfilePower PAVES flow does not support
profile_calibration files, and the veloce_live streaming mode.
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
538 of ANSYS, Inc. and its subsidiaries and affiliates.
Chapter 25: Supporting DesignWare ® Components
25.1. Introduction
PowerArtist supports a flow that automates the synthesis and use of DesignWare® (DW) components.
Any DW component, which is instantiated in the RTL and is not defined either by you or PowerArtist
using the '-macromap' option, can be automatically synthesized under-the-hood using your synthesis
environment. This is a single-pass flow and the synthesized DW netlist is automatically plugged-in and
used for power analysis.
Chapter Organization
The following topics are covered in this chapter:
By default, the generated DW netlists are stored at: '${PWD}/aw_worklib'. You can change the
default location by using the following variable:
pa_set dw_write_directory <dir_name>
If the directory specified by '<dir_name>' is non-writable, PowerArtist generates an error and exits.
During external synthesis of DW components, the technology libraries should be in the '.db' format.
However, they are usually provided in '.lib' format to PowerArtist (using the '-synlib' option). So,
while synthesizing the DW components, '.lib' libraries are converted to the '.db' format.
If there are pre-existing libraries in the '.db' format, use the following variable:
pa_set dblib {<dblib__name_1> <dblib__name_2> <dblib_name_3> ...}
For better performance, use the above option to specify the '.db' files (only for the standard cells).
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 539
Supporting DesignWare ® Components
where, 'dw_worklib' is the directory containing the pre-generated synthesized netlist per DW
component.
If a pre-generated synthesized DW netlist is missing from the specified directory, then those DW
components are black-boxed by PowerArtist and a warning message is issued.
Note: This option does not call the external synthesis tool and therefore saves runtime by preventing
repeated synthesis of DW components.
To re-write or re-generate an existing generated DW netlist, you have to delete the netlist and re-run
with only the '-enable_dw_synthesis' option.
When you use these options together, PowerArtist looks for the presence of a generated netlist in the
path specified using the '-dw_synthesized_dir_path' option.
If the generated netlist is present, it is used for final power analysis. If the generated netlist is not
present, then the DW component is marked for external synthesis and added to an intermediate file.
This way, only the non-existing DW components are synthesized by calling the external synthesis tool,
leading to overall improved runtime.
Several AW wrappers are pre-installed in the release tarkit, which improve accuracy of the flow. The
installation path for AW wrappers and corresponding DW components is:
$POWERARTIST_ROOT/pthdl_src/macros
The default location of the input file containing the list of AW wrappers is:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
540 of ANSYS, Inc. and its subsidiaries and affiliates.
Creating AW Wrappers for Unsupported DW Components
$POWERARTIST_ROOT/pthdl_src/macros/DWCompDefinition.txt
You can change the default location of 'DWCompDefinition.txt' and specify the directories containing
the user-defined AW wrappers by using the following variable:
pa_set aw_directories {<dir1> <dir2> <...> }
PowerArtist reads all the user-defined directories first and then the default location. If the same DW
wrappers are present in multiple directories, they are read from the first directory specified.
The AW wrappers are named like their DW counterparts. For example, the wrapper module for
'DW01_add' is named 'AW01_add' and the wrapper file name is 'AW01_add.v'.
1. Create the RTL description of the AW wrapper in a file by using the following template:
module <AW_name> (<port_list>)
<parameter declaration>
<input/output port declarations>
<corresponding DW instantiation with the parameter and port mapping>
endmodule
• The name of the wrapper module '<AW_name>' is created by replacing the first character
'D' of the DW component by 'A'. For example, if the DW component is named 'DW01_add',
the wrapper name is 'AW01_add' and the corresponding file name is 'AW01_add.v'.
• The '<parameter declaration>' and '<input/output port declarations>' should also be similar
to the parameter and port declarations of the DW component.
• Instantiate the DW component specifying the parameter mapping and named port-mapping.
For example, the wrapper module for 'DW01_add' can be defined as:
module AW01_add ( A, B, CI, SUM, CO );
parameter width = 4 ;
input [width-1 : 0] A;
input [width-1 : 0] B;
input CI;
output [width-1 : 0] SUM;
output CO;
// Instance of DW01_add
DW01_add #(width) U1 (.A(A), .B(B), .CI(CI), .SUM(SUM), .CO(CO) );
endmodule
2. Save the wrapper module in a file named '<AW_name>.v' and specify the location of the file (s)
by using the following variable:
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 541
Supporting DesignWare ® Components
3. Add the entry for the DW component's parameter description at the bottom of the user-defined
'DWCompDefinition.txt' file.
The format of this file is very important for the flow to work properly, so the new entry must be
in exactly the following format:
<DW_comp_name> <single_or_multiple_spaces> <param_name_1>
<single_or_multiple_spaces> <param_name_2>.....
For example, the entry for the component 'DW02_tree' (with two parameters) is as below:
DW02_tree num_inputs input_width
4. Send details of the newly added wrapper(s) to PowerArtist R&D so that support for these
components is added to the next release and you do not need to recreate them.
module AW01_absval
module AW01_absval ( A, ABSVAL );
parameter width = 4;
input [width-1 : 0] A;
output [width-1 : 0] ABSVAL;
// Instance of DW01_absval
DW01_absval #(width) U1 (.A(A), .ABSVAL(ABSVAL);
endmodule
module AW01_addsub
module AW01_addsub ( A, B, CI, ADD_SUB, SUM, CO );
parameter width = 4;
input [width-1 : 0] A;
input [width-1 : 0] B;
input CI;
input ADD_SUB;
output [width-1 : 0] SUM;
output CO;
// Instance of DW01_add
DW01_addsub #(width) U1 (.A(A), .B(B), .CI(CI),
.ADD_SUB(ADD_SUB), .SUM(SUM), .CO(CO) );
endmodule
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
542 of ANSYS, Inc. and its subsidiaries and affiliates.
The DWCompDefinition.txt File
You can specify this '.tcl' file during elaboration by using the following variable:
pa_set dw_synthesis_options_file <tcl_filename>
Elaborate <options>
<snip>
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 543
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
544 of ANSYS, Inc. and its subsidiaries and affiliates.
Appendix A. DWCompDefinition Text File
DW01_add width
DW01_absval width
DW01_addsub width
DW01_dec width
DW01_inc width
DW01_sub width
DW_lzd a_width
DW01_decode width
DW01_cmp2 width
DW01_cmp6 width
DW01_csa width
DW_minmax width num_inputs
DW02_mult A_width B_width
DW02_tree num_inputs input_width
DW02_mult_2_stage A_width B_width
DW02_mult_3_stage A_width B_width
DW02_mult_4_stage A_width B_width
DW02_mult_5_stage A_width B_width
DW02_mult_6_stage A_width B_width
DW01_bsh A_width SH_width
DW02_mac A_width B_width
DW02_sum num_inputs input_width
DW01_binenc A_width ADDR_width
DW01_prienc A_width INDEX_width
DW02_multp a_width b_width out_width
DW_div_pipe a_width b_width tc_mode
DW01_mux_any A_width SEL_width MUX_width
DW_pl_reg width in_reg stages out_reg rst_mode
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
of ANSYS, Inc. and its subsidiaries and affiliates. 545
Release 2025R1.2 - © ANSYS, Inc. All rights reserved. - Contains proprietary and confidential information
546 of ANSYS, Inc. and its subsidiaries and affiliates.