Power Artist Ref
Power Artist Ref
Power Artist Ref
2
Reference Manual 3
Disclaimer
Apache Design, Inc. makes no warranty of any kind, expressed or implied, with
respect to software or documentation, its quality, or performance. The information
in this document is subject to change without notice and does not represent a
commitment on the part of Apache Design, Inc.
Main: 408.457.2000
Fax: 408.428.9569
[email protected]
[email protected]
www.apache-da.com
Table of Contents
CHAPTER 2 Internals
Introduction ................................................................................................................. 9
Chapter Organization ....................................................................................... 9
Transition Counting on Nets........................................................................................ 9
Activity Calculation .................................................................................................... 11
Duty Cycle Calculation .............................................................................................. 11
Micro-Architectural Inferencing ................................................................................. 13
Default Transition Time Calculator............................................................................ 15
INDEX.....................................................................................................................................................293
Chapter 1
Introduction
This chapter describes important concepts related to estimating power. It also
provides details of the internal calculations performed during power analysis. This
information can help you gain a deeper understanding of analysis results. The
following description applies to all PowerArtist tools.
Definitions
Energy is the work required to move charge through a voltage, therefore
E = QV
Equation 1
where E is energy (in joules), Q is charge (in coulombs), and V is voltage (in volts).
Power is energy per second, so
E
P =
T
Equation 2
where P is power (in watts) and t is time (in seconds).
Total power can be divided into two components: dynamic power and static power.
Each is described in more detail in the following sections.
Dynamic Power
Consider the circuit shown in Figure 1, which is a simple model of the charging and
discharging of circuit capacitance.
Although this derivation may be unfamiliar to you, it provides the best approach for
understanding the energy drawn from the power supply; it provides the exact answer
without having to make any approximations. Using Equation 1, the energy drawn
from the pulse generator to charge the capacitor to a voltage V is
E = QV = (CV)V = CV2
Equation 3
The energy drawn from the pulse generator while the capacitor is discharging is
zero, so during one pulse cycle the energy drawn from the generator is
E = CV2
Equation 4
Notice that this equation is similar to the equation for energy stored on a capacitor:
1
E = — CV2
2
Equation 5
Effectively, half of the energy supplied by the pulse generator is dissipated in
charging the capacitor. The other half, which is stored on the capacitor, will be
dissipated when it is discharged.
From Equation 2, the power consumed over the pulse cycle, tp, is
CV2
P = ——
tp
Equation 6
This is the dynamic power associated with charging and discharging a capacitance.
If the pulses continue at a frequency, f, the dynamic power can be written as
P = CV2f
Equation 7
Equation 7 is the common equation for dynamic power. The f in this equation usually
represents the clock frequency. In calculating dynamic power for a complex device, it
is useful to relate nodes that are not toggling at a regular rate to the clock frequency.
Consider a node that toggles N times over an interval T. We know that
Number of Cycles
Frequency =
Time
Equation 8
Also because one cycle is equivalent to two transitions of the signal you have
N
Number of Cycles = —
2
Equation 9
You could write the effective frequency of the signal as
N 1
feff = — —
2 T
Equation 10
To relate this to the clock frequency, note that during the same interval T, there are
Kclk clock cycles where
T
Kclk =
tclk
Equation 11
Substituting for T and tclk (= 1 / fclk) in the equation for feff you get
N fclk αfclk
feff = =
Kclk 2 2
Equation 12
where α is called the activity factor and is the expected number of transitions per
clock cycle. If fclk is the highest clock frequency in the design, then α is a real
number with a value between 0 and 2. Substituting into Equation 7, you get
CV 2 αfclk
P =
2
Equation 13
You can now draw some important conclusions about the relationship between
energy and power from Equation 4 and Equation 13. Equation 4 says that if you
were to charge and discharge a capacitor N times, the energy (NCV2) required to do
so is independent of the period over which you do it. On the other hand, Equation 13
says that more power is consumed if the capacitor is toggled N times in a shorter
period.
Static Power
Figure 2 shows a circuit that is a simple model of static (or DC) power drawn from a
DC source.
DC
Referring to Equation 1, you can substitute for the charge, Q = It, to obtain
E = IVt
Equation 14
The power is easily found from Equation 2
E
P = = IV
t
Equation 15
which is the common equation for DC power.
In contrast to dynamic power and energy, you can conclude from these equations
that static energy is time dependent, while static power is time independent.
Sample Calculation
As an example, consider a device with both dynamic and static components. The
dynamic power is consumed in the charging and discharging of a 2pF capacitor with
a 15MHz clock. The static power is consumed by a 1mA DC current source. The
power supply voltage is 5.25 volts and the simulated time period is 400ms.
You can calculate the total power directly using Equation 13 and Equation 15,
therefore you have
CV 2 αfclk
Ptotal = + IV
2
Equation 16
The activity factor α is 2. Because there are two transitions per cycle of fclk, you can
write
Equation 17
You can check this solution by calculating the energy consumed. The dynamic
energy is consumed by charging and discharging the capacitor over a period 400ms
at a rate of 15 MHz. This is equivalent to 6 million charging and discharging cycles.
The static energy is consumed by the DC current flow for 400ms. The total energy
then is
Equation 18
Using Equation 2 to obtain the total power, you get the following:
2.431mJ
Ptotal = = 6.08mW
400ms
Equation 19
Equation 20
Where... Is...
Pdyn_cells The sum of the dynamic internal power consumed by all cells.
Pdyn_loads The sum of the power consumed in charging all of the nodal capacitances.
Pstatic_current The sum of the static (state-independent) power consumed by all cells.
Pstatic_state The sum of the state-dependent static power consumed by all cells.
Dynamic power represents energy dissipated during toggle events. There are two
contributions to dynamic power:
1. Cell dynamic power (Pdyn_cells) represents the energy consumed internal to the
cell whenever one of its internal nodes changes state. There are primarily two
effects to consider:
a. The charging and discharging of capacitance within the cell.
b. The crowbar currents that flow from VDD to VSS whenever an internal node
switches.
2. Net, or load, dynamic power (Pdyn_loads) is a measure of energy consumed driving
the output net(s) of a cell to a new logic level. It accounts for the charging and
discharging of capacitances external to the cell, which include:
a. The net’s wire capacitance.
b. Parasitic capacitance of pins on the net.
Static power represents energy consumption due to a flow of current from VDD to
VSS when the cell is not switching (that is, no logical events occur). Static power
could be state dependent, that is, the energy consumption could change depending
on logical states of the cell’s inputs and internal nodes. There are two physical
effects that cause static power dissipation:
1. Through currents, which are a direct result of transistor-level design styles such as
analog and pseudo-NMOS styles. Through currents can be avoided by using fully
complementary CMOS structures.
2. Leakage currents, which are due to sub-threshold and reverse biased junction
currents. These are usually in the Pico-Amp to Nano-Amp range, depending on
circuit size, but can be higher for low threshold voltage processes.
capacitive power dissipation for that event. This prevents over-counting or under-
counting of power due to three-state bus events.
The power dissipation attributable to every power dissipating event, as specified in a
gate-level library, is then multiplied by the number of times the event occurs during
simulation (as determined by analyzing the simulation results), to calculate the
energy attributable to that power dissipating event over the course of the simulation.
Chapter 2
Internals 2
Introduction
This chapter provides details on some of PowerArtist’s internal processes and
algorithms and provides information on the different methods you can use to control
them.
Chapter Organization
The following subjects are covered in this chapter:
Transition Counting on Nets
Activity Calculation
Micro-Architectural Inferencing
Default Transition Time Calculator
Transition Action
Transition Action
Activity Calculation
The term “activity” as it refers to a net can be defined as the ratio of the frequency of
a net to the clock frequency. Activity is calculated by taking the total toggles on a net,
dividing them by the total toggles on the clock net for the same time and multiplying
that number by 2. The activity of a group of nets is the average of the activities of all
the named nets in the group. For example, if Activity(net1) = .5 and Activity(net2) =
.75, the average will be 1.25/2 = .625.
If you are performing vector analysis, each group will have average activity values as
a function of time. The average activity value is computed by calculating the activity
value for all nets in that group from your simulation data and computing their average
value. The nets include ports of modules as well as local nets. Remember, a group is
not only a module but all children instantiations of the module.
0 state -- 25ns ( 25 -0 )
1 state -- 30ns ( 55 -25 )
x state -- 40ns ( 95 - 55 )
1 state -- 40ns ( 135 - 90 )
x state -- 20ns ( 155 - 135 )
Here, there are two X value changes. PowerArtist needs to determine whether to
consider them as '0' or '1'.
The first x (55-95) falls in the second case, that is, there are value changes after x;
therefore, x is assumed to be the opposite of its new value(1), which is 0.
The second x (135-155) falls in the first case, that is, x is the last value change;
therefore, GAF creation assumes that half the time (20/2 = 10) the signal was in
the 1 state and the remaining time it was in the 0 state.
Given the values in this example, the duty cycle is calculated as:
T0 = 25 + 40 (1st X will be 0 now) + 10 (half of 20) == 75
T1 = 30 + 40 + 10 (half of 20) == 80
duty_cycle = 80/ (80+75) == .516129
If you specified the “-forced_x 0” option to the CalculatePower command that forces
X to be 0, the calculation will be as follows:
T0 = 25 + 40 + 20 = 85
T1 = 30 + 40 = 70
duty_cycle = 70/155 = .4516
Similarly, you can also use the “-forced_x 1” option to the CalculatePower command
to change the duty cycle.
Micro-Architectural Inferencing
The first step in the power analysis process is for the language compilers to analyze
your HDL design and perform “micro-architectural inferencing”. This step, performed
by the Elaborate command), creates the scenario (.scn) file. Micro-architectural
inferencing is a high-level inferencing step where RTL, block-level components are
extracted from your HDL design.
For example, it is during this step that sequential elements (for example, registers
and latches), instantiated elements (for example, IO cells and memories), data path
elements (for example, adders and multipliers) and control logic (for example,
decoders and multiplexors) are extracted from your code. These then become the
elements that the analyzers use during their power calculations.
HDL code can be structural, behavioral, or mixed. The language compilers perform
inferencing on the behavioral portions of your code. In general, language compilation
operates as follows:
1. Your HDL source is located and parsed into an intermediate representation.
2. For each module (Verilog) or entity (VHDL) in your design, the language compiler
checks if it matches a cell in the library file. If a match is found, no further
processing is performed on the HDL code that defines the module or entity. If a
match is not found, then the language compilation is performed on the HDL code
representing the module or entity.
When the language compilers encounter RTL HDL code (as opposed to structural
instantiations), they infer RTL block-level components which effectively become
another level in your design hierarchy. This process is much like when you perform
gate-level synthesis on your design. However, rather than synthesizing to the gate
level, the compilers synthesize to parameterized higher-level components like n-bit
adders because as noted earlier, the Apache models support multiple input and
output bits.
This parameterization is also true for sequential and control logic inferred modules.
You can recognize these elements because they have “module type names” like
#adder# or #mux21#. The 18 component types that are inferenced are the 14
primitive components (register, latch, adder, multiplier, 2-1 mux, tri state, buffer,
inverter, and, nand, or, nor, xor and xnor) and the 4 macro components (register file,
latchfile, unencoded mux, and decoder). The 4 macro components are modelled as
interconnections of one or more of the 14 primitive components. The inferencing step
follows standard synthesis guidelines and rules established by the many EDA
vendors who perform gate-level synthesis for gate-level simulation and place and
route.
The following Verilog and VHDL code fragments perform identical operations.
Verilog
module a(out, clk, reset, in1, in2);
output [2:0] out;
input clk, reset;
input [1:0] in1, in2;
always @(posedge clk or posedge reset)
if (reset)
out = 0;
else
out = in1+in2;
endmodule
VHDL
entity a is
port (out: in std_logic_vector(2 downto 0);
clk, reset: in bit;
in1, in2: std_logic_vector(1 downto 0));
end a;
architecture trial of a is
begin
process (clk, reset) begin
if reset = '1' then
out <= '0';
elsif clk' event and clk = '1'
out <= in1+in2;
end if;
end process;
end trial;
technology specified by your power library files. The mapping process involves
selecting representative libraries cells for the 14 primitive components.
For default cell selection, you have the choice of either explicitly specifying default
cells in an SLD file or allowing PowerArtist to automatically select the default cells
(preferred). If you specify default cells in the SLD, for each default cell type, you
have to choose one cell name from the power library file that would have the highest
probability of being the cell chosen by your synthesis tool. This cell can then be used
during all calculations that require that cell type.
As previously mentioned, it is recommended that you allow PowerArtist to
automatically select default cells. This method is available for Liberty libraries. During
automatic selection, for each inferred instance, PowerArtist examines the projected
capacitive loading on the instance and searches the power library files for cells
whose power models best fit this particular inferred instance. While a register directly
maps to a flop in a power library file, an n-bit wide ripple carry adder would require
full adder, exclusive-or, nand, and inverter cells. PowerArtist examines the function
statement of each cell in the power library and determines if it matches one of the
primitive components. If it matches, and if it also contains a slew and delay model, it
becomes a candidate for use during power analysis. If the cell function statement is
complex, PowerArtist might not recognize it as one of the default cell types.
Also, with the change of wire load model, the load being driven by the inferred
sequential/combinational logic may change significantly (increase or decrease),
which could result in a difference in the kind of default cells being selected. A
difference in the selection of default cells will result in difference in leakage power.
Consequently, leakage power for a particular design will vary with the selected wire
load model.
The average slew of a cell is calculated using transition tables, of which there may
be up to four—a rise and fall table for each input. These tables are indexed by
input transition time and capacitance.
3. For each transition table, PowerArtist selects a middle value for the input transition
time, and uses the capacitance value calculated in step 1 (that is, the smallest
typical load) to find the output transition time. It then averages the output transition
times found in each of the tables.
4. Using the average value found in step 3 as the input transition time for the
transition tables, PowerArtist repeats step 3. This should cause the transition
times to converge to a single value.
If you have an SLD file that provides the default cell information, and that same SLD
file has the DefaultTransitionTime parameter set, then the value of that parameter is
used by PowerArtist. If you provide an SLD file that does not have the
DefaultTransitionTime set, the default transition time is calculated based on the
default inverter in the SLD file using the algorithm described in the previous
paragraph. The one difference in this case is that the typical load is considered to be
four times (4x) the input capacitance of the inverter.
PowerArtist allows you to specify cells you do not want to be selected as default cells
using the SetAttribute command to define cells that should not be used during
default cell selection.
Chapter 3
Command Reference 3
Introduction
This chapter describes all of the commands accepted in the PowerArtist command
file including the pt_set variables. These commands and variables control the
different power analysis and reduction engines that comprise the PowerArtist
software. The one you choose will depend on the type of analysis you are
performing.
Analyzer Description
Analyzer Description
This example matches all of the children of instance top.i1 because it uses the *
character. So the above string would match:
top.i1.i2
top.i1.i2.i3
top.i1.i4
This command prints help information for the CalculatePower command and exits
ptshell.
You can also access help from within the ptshell, for example:
This example returns a list of all command file commands. This method does not
exit the ptshell.
You can also type the command name followed by the -help option in the ptshell:
This example print help information for a specific command (Elaborate). This
method does not exit the ptshell.
getExtendedName
Given an alias name, this command returns the full (extended) option name. You can
execute this command directly from the ptshell or you can put it into a variable (this
command returns the value of a variable rather than printing to standard output).
Syntax
getExtendedName alias_name
Note that you can optionally specify the hyphen (-) preceding the option name.
Example 1
getExtendedName -finish
This generates as output:
finish_time
Example 2
getExtendedName -cpf_out_file
In this case, the alias maps to multiple option/pt_set variable names. This generates
as output:
This means that the -cpf_out_file alias maps to three different pt_set commands
(depending on the type of analysis you are doing).
Example 3
Chapter Organization
This chapter consists of the following sections:
Alphabetical List of PowerArtist Command File Commands
Alphabetical List of pt_set Variables
Open Access Database Access Utilities
Additional Utilities
AddLibrary
This command defines the logical libraries in your VHDL design. You must specify
this command before the Elaborate command.
Syntax
Example
If you are using wwvmkr to create the ptSourceFiles.tcl file, you will see lines similar
to the following:
AddLibrary LIB_MYLIB ./ww_libmylib
CalculatePower
The CalculatePower command performs either average power analysis or time-
based power analysis. If you are performing a reduction run rather than an average
or time-based power run, you should use the ReducePower command.
Note: The following syntax lines list only the required arguments. The arguments
here are considered “required” if they are necessary to achieve acceptable power
number. For example, you can run a power analysis without setting a -start_time and
-finish_time, but simulation may include a beginning and ending piece that you don’t
want to consider in your power estimation.
Common Options
Additionally, even if you do use the default pin-based estimation, you can enable
arc monitoring for specific cells and instances using the MonitorArcs command.
Default: false
-average_cpf_in_file file_name
Specifies an input file containing power constraints in CPF. This is a beta flow.
Though the software supports a subset of the total CPF 1.1 command set, it will
read CPF files that use all of the available commands. Commands not supported
are ignored. Similarly, the software ignores any command options that are
specified but not supported. For more information, see Using a CPF Input Flow
(Beta).
Alias: -cpf
-average_report_file file_name
Writes a report file for average power analysis with the specified file name.
Alias: -rpt
Default: If you do not specify this option, the output will be generated to stdout.
-average_report_options string
Specifies one or more options that determine the contents of the report file.
0 Prints internal driver power in separate section.
a Includes area information.
c Moves power due to clock switched-cap into the clock report. Specifically, this
option is used for extracting the clock power component of an instance of a
register or latch. The clock power component is obtained from Liberty vectors
modeling just a rise or fall on a clock pin, which may or may not be qualified by
a boolean expression.
Examples:
(01 CLK), (01 CLK || 10 CLK), (01 CLK && CS)
C Moves power due to clock switched-cap into the clock report. Specifically, this
option is used for extracting the clock power component of an instance of a
memory or IP block. The clock power component is obtained from Liberty
vectors modeling just a rise or fall on a clock pin, which may or may not be
qualified by a boolean expression.
d Shows only new deltas on parents when writing a power difference report.
e The power report will be written using scientific notation.
g Includes net frequency and glitch information.
i Indents hierarchy. Children instances are nested and indented underneath their
parent.
I Outputs load power information for primary input nets.
m Excludes inferred instances.
M Outputs retention flops of the library cell to which the inferred instance mapped.
N Includes net transition time information in report.
p Includes hierarchical parents.
Sample File
DFFRX1 typical_13
TLATX1 typical_13
Note: this option is obsolete. You should use the SetAttribute command instead.
-default_output_load float
Sets the default output load to float Farads. This load capacitance is applied to
all primary outputs not listed in the load or wiring cap files (specified using either
the -capacitance_file or -load_file options).
Default: 0
Alias: -dl
-default_transition_time float
Sets the default transition time to float seconds for any net for which slew is not
specified.
Alias: -dt
-detailed_vertical_report true | false
Generates a detailed vertical power report.
Default: false
-domain_frequency_cell_selection true | false
When set to true, this option activates frequency-based cell assignment. There is
no default value for the -domain_frequency_cell_selection option. When combined
with the -frequency option to the SetClockNet command, this option determines
when frequency-based cell selection occurs. Frequency-based cell selection
occurs in either of the following two situations:
-domain_frequency_cell_selection is specified and set to true.
-domain_frequency_cell_selection is not specified at all and -frequency is
specified on one or more SetClockNet commands.
Otherwise, non frequency-based cell selection occurs.
Default: (see description)
-finish_time string
Stops collecting data at the specified string. If string ends with the letter “s”, it
is specified as time, otherwise it is specified in simulator ticks. It is strongly
recommended that you determine a -start_time and -finish_time in order to select
the most representative time slice for your analysis run.
Default: If you do not specify -finish_time, the analysis runs to the end of your
activity file.
Alias: -finish
-flop_clock_activity file_name_prefix
Monitors the activity of clock pins in registers in your design and generates flop
clock activity analysis text files and waveforms in .ptcl format. The
file_name_prefix specifies the prefix you want to use for these flop clock
activity output files (for example, “fca” is commonly used). For more information on
the output files this option produces, see Monitoring Flop Clock Activity.
-fsdb_output_file file_name
Outputs power over time waveforms in the FSDB format to the specified file name.
-gaf_file file_name
Specifies the name to be given to the Global Activity File (GAF) that is generated
by processing the -activity_file argument during an average power calculation.
The average power calculation engine then reads in this file. This argument is
required.
Default: (none)
Alias: -a
-gate_level_netlist true | false
Directs PowerArtist to regard the design as a gate-level. This has the following
effects on the tool flow:
During compilation, Elaborate will ensure that the design is a gate-level netlist.
If RTL operators are encountered (other than direct assignments of one signal
to another), then a warning is printed and the operators are removed from the
design.
During either average or time_based power analysis, PowerArtist will skip
default cell selection for RTL operators. If all simulation activity has been
directly recorded and then power analysis skips activity propagation for
additional runtime efficiency.
Alias: -gate
-interval_size float
Specifies a number of intervals into which the simulation will be broken during a
time-based power analysis. For more information on the usage of this option and
an example, see Controlling Your Time-Based Power Analysis. Note that you
need to either specify -interval or -reference_clock and -num_clock_cycles. This is
used for gate-level designs.
Default: false
-mixed_sim_prob_estimation true | false
Enables activity propagation when the simulation dump is partial and does not
capture all nets, or when the design description does not exactly match the
simulation data.
Default: false
-mode_file file_name
Reads the specified mode control file. Note that you cannot use this option with
the -gate_level_netlist option. This flow is only valid for RTL average power
analysis. For more information on the mode file, see Mode File Format.
-multiple_testbench_control_file file_name
Calculates an averaged power number based on multiple GAF files that were
generated using different testbenches. These GAF files are specified via a control
file you specify as an argument to this variable. Each GAF must be written for the
same design (top level), but cover different portions of the design, or supply
different vector sets. The testbenches do not need to be of equal length or
mutually exclusive, but they are required to have the same top instance.
Alias: -mt
-num_clock_cycles int
Sets the interval size as a number of clock cycles for RTL time-based analysis.
The interval size is the period of the block into which PowerArtist will split the
simulation. It is recommended that you choose an interval greater than or equal to
two clock cycles. This can be a very performance-intensive operation. Imagine
how long it took to simulate your entire design. If you select a small
num_clock_cycles value it is as if you are redoing your entire system and
performing a power calculation step at the same time. If you specify this option,
you must also specify the -reference_clock. Note that you need to either specify
-interval_size or -num_clock_cycles and -reference_clock.
Default: 0
-power_tech_file file_name
Specifies a PACE technology file for capacitance estimation. Capacitance
estimation using PACE overrides capacitance estimation using wire load models,
whereas other capacitance annotation methods override capacitance estimation
using PACE. For more information, see Using PACE Technology Files During
Power Analysis (Beta) in the PowerArtist User Guide and
Chapter 9, Generating PACE Technology Files (Beta) in the PowerArtist Library
Developer’s Guide.
-print_missing_sim_nets true | false
Prints the names of nets that are in your scenario file but are not in your
simulation file.
Default: false
-ptcl_output_file file_name
Outputs power-over-time waveforms in the PTCL format to the specified file name.
-quiet true | false
Suppresses printing of note-level messages.
Default: false
-reference_clock clock_name
Specifies the reference clock for time-based power analysis. It controls when a
clock starts and the length of its period. Note that you need to specify either -
reference_clock. and -num_clock_cycles or -interval_size. This is used for RTL
power analysis.
-saif_file file_name
Specifies a SAIF file to use for power analysis instead of a VCD or an FSDB file.
For details on this flow, see Analyzing Average Power Using a SAIF File.
-save_clock_trees_netlist true
Generates power database schematics for the clock tree in the design.
Default: false
-save_x_nets_file file_name
Creates a file listing any nets that are in an X state during the simulation. This
creates a file with three columns.
Sample Output
count.n29 1 0.000000011000
count.n46 2 0.000000034000
The first column is the signal name. The second column is the number of times
the signal transitions to an X state. The third column is the cumulative time spent
by the signal in the X state. You can use the -allowed_x_time option to set the
tolerance of X detection, that is, the allowable time span beyond which signals
stuck at X get reported. You can sort this file by any of the three columns using
the UNIX “sort” utility, for example:
% sort -r -n -k 2 x_net_file_name
% sort -r -n -k 3 x_net_file_name
-r reverses the order of the result so the largest values are at the top.
-n performs a numerical sort.
-k col_num indicates the column number by which to sort.
Note
Note that enabling X net reporting can increase the run time for GAF creation.
Also, instead of using the default setting of 10 ns, it is recommended that you set
-allowed_z_time to a value that is most appropriate for the simulation.
Alias: -save_x_nets
-scenario_file file_name
Specifies a scenario file name. If you are in composite mode, this specifies the
root from which PowerArtist will search for other scenario files.
Default: (none)
Alias: -scn
-skip_clock_analysis true | false
Allows you to run PowerArtist without a SetClockNet command. When set to true,
the clock file is ignored. The default for this options is false. The following
conditions will print warning/error messages:
If you do not set this option to true and you do not specify a SetClockNet
command, you will get the following error message:
Error: Neither a SetClockNet command nor a
skip_clock_analysis option is specified. One of them is
required.
If you set this option to true but you do not specify at least one SetClockNet
command, you will get the following warning message:
Warning: No SetClockNet command is specified. A skip_clock_analysis option
is specified. Therefore, clock tracing and inferencing analysis will be disabled.
Unless the design has clock trees instantiated, inaccurate results may occur.
You can then supply the Peak Register Activity (.7 in this example) to CoolTime.
The Note also records the start and end time of the peak interval.
-suppress_messages {warn_num1 warn_num2 ...}
Adds the specified Tcl list of warning numbers to the supplied list of warnings to be
suppressed. Note that if you specify multiple -suppress_warnings options that the
list of message numbers you subsequently supply will overwrite the original list.
Default: (none)
Alias: -nowarn
-transition_time_file file_name
Back-annotates transition times (slews) for nets and pins from the specified file.
For more information, see Transition Time File Format.
Default: (none)
Alias: -tt
-use_existing_gaf true | false
When set to true, PowerArtist re-reads an existing GAF stimulus file during
simulation-based average power analysis. This allows you to perform what-if
experiments without re-reading your stimulus file, which can be time-consuming.
Default: false
-use_library_file_names true | false
When set to true, stores cell libraries by file name rather than by the logical library
name inside the Liberty file. Whenever you specify a library name, it is interpreted
as a file name rather than the name inside the .lib that has the line “library
logical_library_name {....}”. This option is required if you have multiple library
files that share the same logical library name.
Default: false
-use_scan_flops true | false
Uses only scan flip-flops for default flip-flop cell selection. By default, all types of
flip-flops are considered for default flip-flop selection, including scan flip-flops.
Default: false
-use_rtl_sim_data true | false
Uses RTL simulation data for average gate-level power analysis. To use this
feature, you must have generated your activity file (GAF) using a name-mapped
flow. For details, see Name Mapping Flow.
Default: false
Alias: -rtlsim2gate
-vectorless_input_file file_name
Reads the specified file as a Vectorless Activity File (VAF) and run s a vectorless
average power analysis.
Alias: -vectorless_input
-vertical_report_instances {inst1 inst2 ...}
Produces a vertical report that provides summary information for the specified list
of instances. This is valid only for average power analysis. Note that vertical
reports do not include instances that are reported as part of clock tree power.
-vertical_report_sort_mode (alphabetical | power)
Sorts the vertical report when it is generated by the -vertical_report_instances
option.
Default: alphabetical
Alias: -sort
Uncommon Options
#0
0$
#10
x$
#20
0$
#30
x$
#40
0$
#50
x$
#60
0$
#70
x$
If string ends with the letter “s”, it is specified as time, otherwise it is specified in
simulator ticks.
Default: 10ns
-allowed_z_time string
Specifies an amount of time a net can be in an Z state. If string ends with the letter
“s”, it is specified as time, otherwise it is specified in simulator ticks. The nets that
exceed the allowed time in the Z state are reported in a text file (see -ftn_report).
Default: 100ns
-average_cpf_output_file file_name
Writes out CPF constraints that capture Multi Supply Voltage (MSV) and Power
Shut-Off (PSO) design intent. You can then use these constraints in other tools
such as Cadence’s RTL Compiler™. The resulting file is in ASCII format,
therefore, you can add to or modify the generated CPF commands. The
commands are not expected to capture of all the information required to
synthesize the design. For details, see Using a CPF Output Flow (Beta) in the
PowerArtist User Guide.
Alias: -cpf_out_file
-average_html_report_title file_name
Generates an HTML report file with the specified name. By default, no HTML file
is produced.
-average_results_file file_name
This is only used to create power difference reports. If you are not generating
them, do not use this option. Power analysis data is now stored in the power
database.
Alias: -o
-capacitance_file file_name
Reads the specified file as a back-annotated inter-module wire capacitance file.
See Capacitance File Format for more information.
Default: (none)
Alias: -c
-check_synlib_semantics true | false
Performs semantic checks on specified Liberty files.
Default: false
-compare_with_results_file file_name
Reads the specified result file generated using the -average_results_file option
and prints a report section showing the difference in power between the result file
and the current estimation.
Default: (none)
Alias: -diff
-ftn_report_file file_name
Specifies a name for the report containing names of the Floating Tri-state Nets
(FTN).
Default: (none)
Alias: -ftn_report
-heartbeat string
Prints progress information during GAF file creation. The specified string is taken
as the time between emitting progress messages. If string ends with the letter “s”,
it is specified as a fraction of simulation seconds; otherwise it is considered to be
simulation ticks.
For example, if the time scale for your simulation results is 10 ns. Specifying “-
heartbeat 1” will print a progress message every 10 ns of simulation time. If you
specify “-heartbeat 20ns”, you will get a heartbeat message approximately every
20 ns of simulation time.
The generated message is similar to the following:
Note 2086: Simulation time is now xxx (yyy simulator ticks).
The simulation time in the messages is approximate to the heartbeat because you
must have simulation signal change results in your activity file that occur
approximately every heartbeat.
Default: (none)
-html_report_directory dir_name
Specifies a collection directory that allows for the organization of HTML reports
from various executions or designs, into a single HTML page. You can collect all
HTML reports in a central location. This option writes HTML files into the specified
directory. The top-level file is named index.html. This option must be used with the
-average_html_report_title argument.
Default: (none)
-ignore_SPEF_C_comments true | false
Ignores “C-style” comments in the SPEF file.
Default: false
-ignore_toggles_through_x true | false
Ignores transitions to the X state during toggle calculations.
Default: false
Alias: -ix
-instance_power_threshold float
Eliminates instances with less than float percentage of the total power from the
power report.
Alias: -e
CompileFile
This command defines how to compile each of the source files in your design. This is
most often used in conjunction with the AddLibrary command for VHDL or mixed
VHDL and Verilog designs. The CompileFile command must come before the
Elaborate command.
Syntax
Options
Example 1
Example 2
Example 2
CpfIncludeFile
This command allows you to pass in a CPF file name that is required to be sourced
in the PowerArtist generated CPF file. As an example, you can use this functionality
to specify a CPF file having library-related define commands. This file name is then
added to a Tcl “source” command and placed just before the set_design command of
the top-level module in the resulting CPF output file.
Syntax
Example
CreateDomain
This command defines a domain in your design. The domain may be a simple
voltage domain where you want to control your power supply values or it may be a
power domain. This command creates the domain by associating virtual supplies
with specific hierarchical instances. To distinguish a power gating domain from a
normal voltage domain, you must specify the -on condition when you create the
virtual supply.
Syntax
Arguments
-name domain_name
Specifies the name of the domain being created. This is required for the CPF
output flow.
-instance instance_name(s)
Specifies a hierarchical path to one or more instances. You can specify a Tcl list of
instances. Each instance name may include the * wild card character. The power
domain is assigned for the instance and all of its children in the hierarchy. As with
the SetLibrary command, CreateDomain commands applied to child instances of
a power domain will create a new domain and override the effects of any previous
CreateDomain commands. The first instance name in the list will become the
domain name in the vectorless power reports; therefore, if you want to track power
per individual instance, then use only one instance name per CreateDomain
statement.
-virtual_supply supply_name(s)
Specifies one or more virtual supplies previously defined using the
CreateVirtualSupply command. If you want to control multiple virtual supplies for a
domain, do not supply two separate commands—instead, supply multiple virtual
supplies as a Tcl list.
Example 1
If the RTL was not partitioned so that the logical hierarchy of the design matches the
way you want the partitions to line up, you can specify a list of instances to create the
desired domain. Such an example would be:
Example 2
These examples show how you can create domains with different names.
CreateGraph
This command generates a graph of data related to clock gating opportunities. It
helps you determine the value to be used for the -cumulative_savings argument to
the WriteClockGatingConstraints command.
Syntax
Arguments
-graph_class clock
Specifies the type of reduction data that should be examined for plotting.
Currently, this command only supports the “clock” value. This will generate graph
data related to clock gating opportunities. This argument is required.
-graph_output_file file_name
Specifies the PTCL file name containing graph data. If you don’t specify this
option, the PTCL is output to the log file, which by default is named
CreateGraph.log.
-power_db_name file_name
Specifies the name of the power database (.pdb) file that contains the reduction
data to be used to generate the graphs. This argument is required.
Alias: -pdb
-graph_log file_name
Specifies the log file name containing any messages generated by this command.
Default: CreateGraph.log
-graph_type power_savings
Specifies the form of the graph to be generated. Currently, the graph type
supports only “power_savings”. This generates a cumulative power savings curve
as a function of the number of RTL reduction opportunities.
CreateVirtualSupply
This command creates/defines virtual supplies. One supply can have multiple virtual
supplies. This is most useful for voltage domain or power gating applications. In this
application, you can define one virtual supply per library supply rail, per power
domain. This manner of creating virtual supplies supports the specification of on/off
conditions for power gating applications.
To use voltage domain applications, you will at a minimum need 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 will be derated using the new estimation voltage
value. That new voltage will then be used to compute new energy and power
numbers. This flow incorporates the standard PowerArtist derating technique.
For power gating, you will use the -supply, -virtual_supply and -on options.
Syntax
Arguments
-supply power_rail_name
Specifies a power rail in one or more libraries. The power rail name can be
qualified by a logical library name. If you do not specify a logical library name,
then the -virtual_supply will apply to all libraries sharing that supply name when
the virtual supply is associated with one or more instances using the
CreateDomain command. The logical library name must be found in the libraries
specified by the -synlib_files command option. One, but not both, of either -supply
or -pg_type is required.
-pg_type pgtype
The legal pgtype options are primary_power, internal_power, backup_power,
primary_ground, internal_ground and backup_ground. The virtual supply will be
associated with all pg_pins in your Liberty library for which the pg_type attribute
has the same value as you specified it to this command. The power calculation for
any vector associated with this pg_pin (specified in your Liberty library using the
related_power_pin attribute where the attribute value is the pg pin name) will use
the voltage and on condition specified with the CreateVirtualSupply command. If
you use this option and your libraries do not specify pg_type attributes, all power
rails will be treated as primary_power rails.
The critical portions of a cell description from a Liberty cell using the pg_type
attribute is:
cell (XYZ) {
pg_pin(VDD) {
voltage_name : VDD;
pg_type : primary_power;
}
pg_pin(VSS) {
voltage_name : VSS;
pg_type : primary_ground;
}
pin(A) {
internal_power() {
related_pg_pin : VDD;
when : "!EN";
rise_power(template_1x7) {...}
fall_power(template_1x7) {...}
}
}
pin(EN) {
related_power_pin : VDD;
related_ground_pin : VSS;
internal_power() {
related_pg_pin : VDD;
when : "!A";
rise_power(template_1x7) { ... }
fall_power(template_1x7) { ... }
}
}
leakage_power() {
related_pg_pin : VDD;
when :"!A & !EN";
}
}
-virtual_supply supply_name
Specifies a unique name for a virtual supply.
-voltage voltage
Specifies the estimation voltage for the specified virtual supply. By default units
are Volts. You can specify an optional unit. 1.0V is the same as 1.0, which is the
same as 1000mV. There can be no space between the number and the unit.
-on condition
Specifies that this virtual supply will be used for a power domain. The condition is
a double quoted string that represents any legal boolean condition in the target
language. When this condition evaluates to TRUE, the virtual supply is expected
to be on, causing both static and dynamic power. When the condition evaluates to
FALSE, the virtual supply is expected to be off. For each instance connected to
this virtual supply, the portion of the static and dynamic power due to this supply
will be set to 0. Optionally, the condition string can be a constant 0 (FALSE) or a
constant 1 (TRUE). This type of expression requires no run time evaluation and
MUST be used during RTL vectorless analysis to set the power domain into a
particular state for the analysis.
-default on | off
Specifies the state of the main power net of the domain (and thus the state of the
domain) in the default power mode in CPF.
Default: on
Example 1
In this example, VDD has two virtual supplies created for it: VDDSW and VDDSW1.
The supply VDDC found in library stdcell1 has a virtual supply VDDCSW and its
estimation voltage is set to 1.1V. If the default estimation voltage specified by the
library is not 1.1V, then derating will occur during power analysis. In addition, the
virtual supply VDDSW1 will be associated with a power gating application. Whenever
the signals A and B are both true during a simulation run, the power domain
associated with this supply will be assumed to be active; otherwise, it is assumed to
be in stand-by mode.
Example 2
This example shows the use of the -default switch that specifies the default state of
the virtual supply.
Example 3
The virtual supply VS1 is on all the time and will be estimate with a 1.6V voltage. If
no pg_type attributes exists in the technology library, then all supplies will be mapped
to VS1. Otherwise, the pins tagged with pg_type : primary_power will be used to
locate the supplies.
DefineGroup
This command defines instance groups for the GenerateActivityWaveforms
command. You can also use this command to remove existing groups. Note that if
you specify an existing group name, this command will redefine that group with the
new instance list.
Syntax
Arguments
group_name
The name of the group to which you are assigning the given elements (or the
group you are removing).
instance(s)
A Tcl list of hierarchical instance names to be included in the given group name. If
you have one element, it is not necessary to enclose the instance(s) in curly
braces unless there are characters like [ ] that must be escaped. If you specify an
empty instance list, PowerArtist will delete the specified group.
-levels int
This option defines the hierarchical levels that are included in the defined group.
You can specify any value equal to or greater than 0.
Example 1
Example 2
Example 3
Example 4
DefineGroup channels
This example reports the contents of the group named ‘channels’. If the specified
group name does not exist, PowerArtist will report an error noting that there is no
such group.
Example 5
DefineGroup top {}
This example removes the group named top.
Example 6
Example 7
Example 8
DefineHalfMemScalingFactor
This command is used by the Split Memory Words PowerBot to perform memory
splitting during power reduction analysis. You can use this command to define the
parameters for calculating the power of half-size memories. If your Liberty files
contain half-size memories, then this command will not be applied. If it does not,
reduction will calculate the dynamic/static power of half-size memories based on the
scaling factors you specify with this command. This PowerBot calculates the power
by taking the power numbers calculated from the full-size memory and multiplying
them by the specified scaling factors.
Syntax
Arguments
-dynamic_scale_factor dynamic_factor_float
Specifies a scaling factor for computing the dynamic power of half-size memories
of the specified original size (-mem_size) and the specified type (-mem_type). You
can specify any floating point value between 0 and 1.
Default: 0.7
-static_scale_factor static_factor_float
Specifies a scaling factor for computing the static power of half-size memories of
the specified original size (-mem_size) and the specified type (-mem_type). You
can specify any floating point value between 0 and 1.
Default: 0.7
-area_penalty_factor area_factor
Specifies an area penalty factor that will be used to compute the area penalty (for
instances and nets) of circuitry introduced for half-size memories of the specified
original size (-mem_size) and the specified type (-mem_type). You can specify
any floating point value between 0 and 1.
Default: 0.7
-mem_type RAM | ROM
Specifies the type of the original memory that is to be split. If not specified, the
parameters set in this command are applied to all types of memories.
-mem_size word_x_width
This specifies size of original memory that is to be split. If not specified, the
parameters set in this command are applied to memories of all sizes.
Example
DefineLibAlias
This command defines aliases for libraries used for VHDL or mixed VHDL and
Verilog designs. You must specify this command before the associated CompileFile
and Elaborate commands. Given two library names (lib_name1 and lib_name2), this
command will designate that both names refer to the same design library. Any design
unit that is compiled into lib_name1 will also be accessible from lib_name2.
Configuration declarations, configuration statements, and use clauses may refer to
the design unit from within either library.
Syntax
DefineMemActivityThreshold
This command defines the number of clock cycles during which a memory address
bus must maintain a stable state (1 or 0) for it to be considered as a candidate for
splitting by the SMW PowerBot.
Syntax
Arguments
-num_clocks
Specifies the number of clock cycles (as an integer) for which the address bus
must be stable.
-mem_type
Specifies the type of memory to which the given threshold (clock cycles) will apply.
If not specified, the threshold is applied to all types of memories.
-mem_size
Specifies the size of memory to which the given threshold (clock cycles) will apply.
If not specified, the threshold is applied to all sizes of memories.
DefineMemory
This command identifies/defines memory cells and critical memory ports in your
Liberty libraries.
The DefineMemory command is also used by the Split Memory Words and Gate
Memory Clock power reduction techniques (PowerBots) to identify critical memory
ports like chip-select, read/write enable etc. The DefineMemory command allows the
ReducePower command to classify memories into one of the following types:
Single clock/multi port SRAM
SRAMs with bit-write support
Single port register file
A two-port register file with memory and write enables
ROM
Syntax
DefineMemory
-library {lib_name1 lib_name2 ...} [-attribute mem_attribute]
-access_enable {access_enbl_port_name1 access_enbl_port_name2
...}
[-read_address {read_address_port1 read_address_port2 ...}]
[-write_address {write_address_port1 write_address_port2 ...}]
[-data {pin_name1 pin_name2 ...}]
[-memory_enable {mem_enbl_or_sel_port1 mem_enbl_or_sel_port2
...}]
[-cell {cell_name2 cell_name2 ...}]
[-input_latency number_clock_cycles]
[-output_latency number_clock_cycles]
Arguments
You can use standard glob-style wild cards with all of the following arguments.
-library {lib_name1 lib_name2 ...}
Specifies a Tcl list of logical library names—not the library file name.
-attribute mem_attribute
Specifies a memory attribute present in the .lib. This is optional if you specified -
library.
-access_enable {access_enbl_port_name1 access_enbl_port_name2 ...}
Defines the given Tcl list of ports as access enable ports that indicate whether a
read or write operation will occur.
-input_latency number_clock_cycles
Specifies the number of clock cycles (as an integer) that it takes to pass the input
data to the memory core.
Default: 0
-output_latency number_clock_cycles
Specifies the number of clock cycles (as an integer) that it takes to for the data to
be read from the memory core and be presented at the memory output.
Default: 0
A value of 0 means that the data is available in the same clock cycle and can be
latched in the next clock cycle. Specifying latency values has the following critical
impacts:
First, the memory enable time gets stretched by the number of cycles specified
by the input latency. This means that the clock can be gated only if the clock
was not gated in the previous cycle. This condition needs to hold for the
number of clock cycles specified in by the -input_latency option.
Second, ODC conditions then need to be aligned by input_latency +
output_latency clock cycles.
-read_address {read_address_port1 read_address_port1 ...}
Defines the given Tcl list of ports as read address ports.
-write_address {write_address_port1 write_address_port2 ...}
Defines the given Tcl list of ports as write address ports.
-data {pin_name1 pin_name2 ...}
Defines the given Tcl list of ports as input and output pins carrying data ports.
-memory_enable {mem_enbl_or_sel_port1 mem_enbl_or_sel_port2 ...}
Defines the given Tcl list of ports as memory enable or select ports.
-cell {cell_name2 cell_name2 ...}
Defines the given Tcl list of cells as memory cells during the analysis. The -cell
argument is optional. If you do not specify it, the analysis will consider all cells in
the given library (specified by the -library option) as memory cells.
You need to specify either the -library or the -attribute option. You cannot specify
both.
If the DefineMemory command is going to be used for power analysis only, then
you only need to specify the -library option.
Wild cards are accepted in the library/cell/port names, but the expression you
specify should identify a unique name. For example, if your chip enable port is CE
and the read/write enable is WE, then *E is an incorrect definition for -
memory_enable, as it will identify both CE and WE. Instead, you need to specify
CE.
For vectored ports, always use a * at the end of the name. For example, if there is
a 32-bit data bus named DA, then specify it as:
-data {DA* QA*}
If the .lib specified using the -library option contains all memory cells (which is
usually the case) then -cell is optional.
If your memory has memory(), memory_read(), memory_write() attributes, then
-read_address, -write_address and -data are optional. This is because
PowerArtist can identify data and address ports using these attributes.
Example 4
Elaborate
This command elaborates your HDL design which may be at the RT, mixed RT and
gate or gate level of abstraction. The design may be written in VHDL, Verilog,
SystemVerilog or a combination of them all. After it elaborates your design, it stores
the results in a scenario file and an optional power database.
Note: The following syntax lines list only the required arguments. The arguments
here are considered “required” if they are necessary to achieve acceptable power
numbers.
Syntax
Common Options
// quickturn translate_off
// synopsys translate_off
assign out = in;
endmodule
In this case, you would use the following option specification to turn off the
translate_on/translate_off directives:
-elaborate_ignore_directives {quickturn synopsys}
-elaborate_log file_name
Specifies the name of the log file for the Elaborate command.
Default: Elaborate.log
Alias: -log
-elaborate_write_power_db true | false
Writes to the power database. When set to true, the inferencing engine will output
the OpenAccess database representation of a hierarchical netlist of your design.
Default: false
Alias: -write_pdb
-gate_level_netlist true | false
Directs PowerArtist to regard the design as a gate-level. This has the following
effects on the tool flow:
During compilation, Elaborate will ensure that the design is a gate-level netlist. If RTL
operators are encountered (other than direct assignments of one signal to another), then
a warning is printed and the operators are removed from the design.
During either average or time_based power analysis, PowerArtist will skip
default cell selection for RTL operators.
Alias: -gate
Default: false
-ignore_translate_off true | false
Ignores translate_off and translate_on meta comments in all files.
Default: false
-ignore_translate_off_files file_name1 file2_name2...
Specifies a Tcl list of files in which to ignore the translate_off and translate_on
meta comments.
-list_required_traces file_name
Generates a file containing a list of nets that must be monitored (recorded) to
ensure an accurate power analysis. The resulting file will contain one net name
per line. This file is used in a Palladium flow. For more information, see Acquiring
Simulation Data in Palladium Flows.
-parameter_maps name=value
Assigns values to different parameters for a top-level VHDL or Verilog module. For
example, suppose you have 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 could override the size parameter by adding the -parameter_maps option in
your command file:
When PowerArtist elaborates the Verilog design, “size” would be set to 4. If you
have multiple parameters you want to override, you could use multiple instances
of the pt_set parameter_maps variable or include multiple values with a Tcl list of
name=value pairs. For example:
Elaborate -parameter_maps p1=4
Elaborate -parameter_maps p2=5
accomplishes the same operation as:
Elaborate -parameter_maps {p1=4 p2=5}
You can also use the -parameter_maps option to set generics. Take, for example,
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);
CC : OUT STD_LOGIC_VECTOR(SIZE-1 downto 0));
END TOP;
ARCHITECTURE A0 OF TOP IS
BEGIN
CC <= BB AND TT;
END A0;
Given this fragment, you could add the following lines to your command file to set
the SIZE parameter:
Elaborate -parameter_maps SIZE=4
Alias: -param_map
-scenario_file file_name
Specifies a scenario file.
Default: (none)
Alias: -scn
-synlib_files {file_name1 file_name2 ...}
Adds the specified file or Tcl list of files to the list of Liberty technology files. You
can also use the ReadLibrary command to specify which Liberty libraries to read.
Default: (none)
Alias: -synlib
-system_verilog true | false
Treats all files in the Verilog startup file (specified with the -verilog_startup_file
option) to be System Verilog files.
Default: false
-tag_blocks true | false
Tags registers with the surrounding block name. These tags will be used later in
the MapRetentionCell command to control retention cell default cell selection.
Default: false
-top [library_name.]design_unit_name
Specifies the top-level module name. Note that the “library_name.” is only needed
for VHDL designs where the same design unit name is in multiple libraries.
Default: (none)
-verilog_2001 true | false
Enables recognition of Verilog 2001.
Default: false
-verilog_startup_file file_name
Reads in the specified startup file. You will most likely require this option for your
Verilog design. As an unlikely alternative, you may use the CompileFile command
to specify your Verilog files. We recommend only using this command for either
VHDL or mixed Verilog/VHDL designs. The Elaborate command recognizes and
expands UNIX environment variables that appear in this startup file. You can
specify environment variables either with brace delimiters as in “${VARNAME}” or
without, as in “$VARNAME”. If you do not use brace delimiters, the variable name
is considered to end with the last alpha-numeric or underscore (_) character.
Environment variables within comments are not expanded. If there is no definition
for a variable required in the startup file, an error is reported and the program will
terminate with error status.
Default: (none)
Alias: -f
Uncommon Options
GenerateActivityWaveforms
This command runs vector analysis in batch mode. You need to have read in your
library files prior to running this command. Vector analysis supports two modes of
operation: clock cycle mode and time-based mode. In clock cycle mode, you need to
provide a reference clock and the clock cycles over which you want to perform the
analysis. This will produce a graph of activity as a function of clock cycles. In the
time-based mode, you provide the simulation time duration over which to perform the
analysis. This will produce a graph of frequency as a function of time. Use the -
activity_waveform_graph_type argument to specify the mode of operation.
Arguments
-activity_debug_flags value
Prints debug information during activity analysis.
-activity_file file_name
Specifies the name of your VCD/FSDB/IAF file that will provide the toggle
information.
Default: activities.iaf
Alias: -iaf
-scenario_file file_name
Specifies a scenario file.
Default: (none)
Alias: -scn
-top_instance inst_name
Specifies the activity_file point that matches the -top you used to build the
scenario file.
Alias: -topinst
-activity_waveform_clock_edge (pos | neg | auto)
Specifies the clock edge on which the analysis will begin. You can start the
analysis on the first rising edge (pos), falling edge (neg) or first edge (auto) of the
reference clock.
Default: The default is pos (meaning positive or rising edge).
-activity_waveform_clock_name clock_name
Specifies the full path name of the reference clock. The name is based on the -top
option used to generate your scenario file and is not based on the -top_instance
used to control the starting point in your testbench.
-activity_waveform_cycles_per_interval int
Specifies the number of clock cycles that would turn into one (x,y) data point in
your activity graph.
Default: 1
-activity_waveform_graph_type activity_per_cycle |
frequency_per_interval
Specifies activity_per_cycle for clock cycle mode or frequency_per_cycle for time-
based mode.
Default: activity_per_cycle
-activity_waveform_group_list group_list
Specifies a Tcl list of group names defined in by DefineGroup commands. These
represent the instances you want to monitor.
-activity_waveform_interval_size time
Specifies the length of your interval in time steps. The time is given as an integer
followed by one of the following standard time scale indicators: s = seconds, ms =
milliseconds, us = microseconds, ps = picoseconds, fs = femptoseconds, or as =
atoseconds.
-activity_waveform_log file_name
Specifies the log file name for activity file generation.
Default: Waveform.log
-activity_waveform_number_of_intervals int | all
Specifies the number of intervals to be analyzed.
Default: all
-activity_waveform_start_clock_cycle int
Specifies the clock cycle number that will form the starting point for the analysis.
The combination of activity_waveform_cycles_per_interval and
activity_waveform_number_of_intervals defines the finishing clock cycle.
Default: 0
-activity_waveform_start_time time
Specifies the simulation time step that will form the starting point for the analysis.
The combination of activity_waveform_interval_size and
activity_waveform_number_of_intervals defines the finishing time step. The time
is given as an integer with the same standard time scale indicators mentioned for
-activity_waveform_interval_size.
-activity_waveform_log file_name
Specifies the name of the log file to which information is written.
Default: Waveform.log
Alias: -log
-critical_messages tcl_list_message_ids
Specifies a list of message IDs to be flagged as critical. If PowerArtist encounters
these message numbers, they are highlighted as critical in the final message
summary. Note that when you specify a message ID list, it will overwrite the
current list of critical messages including the default list determined by Apache. If
you want to maintain the default list and simply add to it, you must include the
message IDs that are considered critical by default.
Default: 1371 1409 1425 2034 2046 2089 2818 2859 3331 3332 3344 8309 8517
Alias: -critical_msgs
-fsdb_output_file file_name
Specifies the name of the FSDB file. You can view the resulting file in the using
the Apache Waveform Viewer (or the Verdi™ product from SpringSoft).
-mixed_sim_prob_estimation true | false
Enables activity propagation when the simulation dump is partial and does not
capture all nets, or when the design description does not exactly match the
simulation data.
Default: false
-multiple_license_files true | false
Allows PowerArtist licenses to be served by multiple licenses.
Default: false
-ptcl_output_file file_name
Specifies the name of the PTCL file. The PTCL file is a graphical file showing
power over time. You can view the resulting .ptcl file in the using the Apache
Waveform Viewer.
GenerateEtclFile
This command generates Etcl files. You can use the arguments for this command as
pt_set variables (pt_set arg_name value) in your PowerArtist command file.
Syntax
Arguments
-etcl_file file_name
Specifies the name of final etcl file to be generated.
-etcl_start_time time
Specifies the start time for the activity window you want covered by the etcl file.
Standard engineering notation applies (for example, 10ns).
-etcl_finish_time time
Specifies the end time for the activity window you want covered by the etcl file.
Standard engineering notation applies (for example, 10ns).
-etcl_log file_name
Specifies the name of the output log file for this command.
Default: GenerateEtclFile.log
Alias: -log
-activity_file file_name
Specifies the name of your VCD/FSDB/IAF file that will provide the toggle
information for the Etcl file. This file may either be for the gate-level design or an
RTL design if you are using an RTLSim2Gate flow as described for the
GenerateActivityWaveforms command.
If you are using the RTLSim2Gate flow, you must also do the following:
a. Supply the name map file in your command file before the GenerateEtclFile
command. This is required to map RTL names to your gate-level netlist. This
process is described in the Name Mapping Flow section.
b. Supply the “-use_rtl_sim_data true” option (as described for that option).
-mixed_sim_prob_estimation true | false
Enables mixed estimation.
Default: false
Alias: -mixed
-ptcl_output_file file_name
Specifies the name of the ptcl file. The ptcl file is a graphical file showing power
over time. You can view this file in the Apache Waveform Viewer.
-scenario_file file_name
Specifies a scenario file.
Default: (none)
Alias: -scn
-synlib_files file_name1 file_name2 ...
Adds the specified file Tcl list of files to the list of .lib technology files. The asterisk
wild card is allowed, and is expanded by the shell. You can also use the
ReadLibrary command to specify which Liberty libraries to read.
Alias: -synlib
-top_instance top_module_name
Specifies the full hierarchical name of the top-level module in the simulation
hierarchy.
Default: (none)
Alias: -topinst
-use_rtl_sim_data true | false
Uses RTL simulation data for gate-level power analyses. To use this feature, you
must have generated your activity file (GAF file) using a name-mapped flow.
Default: false
Alias: -rtlsim2gate
MapRetentionCell
This command forces PowerArtist to consider retention cells for power analysis. To
recognize retention cells in a Liberty file, PowerArtist uses two criteria:
It must be defined as a flop or latch in a function statement or state table; and
It must have a power_gating_cell attribute.
Generally, retention cells are not selected for power analysis by the default cell
selection algorithm. To force PowerArtist to consider retention cells in the design, you
must supply one or more MapRetentionCell commands.
The latest MapRetentionCell command in your Tcl file supersedes earlier
MapRetentionCell commands for particular instances. This allows you to create
generic rules and then override them later on with more specific rules.
Syntax
Arguments
-instance instance_name(s)
Specifies a Tcl list of instance names, each of which may contain wild card
characters. If you do not specify the -instance or -net argument, this command will
apply to all instances in the design.
-net net_name(s)
Specifies a Tcl list of net names that will be inferred as a register or latch. Each net
name may contain wild card characters. Supplying a net name allows you to
supply specific register bits to retention cell mapping, rather than having it take
effect over an entire begin block or process statement. If you use the -net
argument you will not use the -tag or -notag argument. If you do not specify the -
instance or -net argument, this command will apply to all instances in the design.
-attribute value
Allows you to specify the value for the power_gating_cell attribute that will be
used to determine candidate retention cells.
-cell cell_name(s)
Specifies a cell name or a Tcl list of cell names to be used as retention cells. You
can not use wild cards in the cell names. Note that you can select either -attribute
or -cell, but not both.
-library lib_name(s)
Specifies a library name or a Tcl list of library names from which the cell will be
taken. You can use this option only if you also use the -cell option.
-exclude inst_name(s)
Specifies an instance name or a Tcl list of instance names that do not need to
have retention cells. You can use wild cards for the instance names.
-tag tag_name
Specifies the names of begin blocks or process statements that control which sub-
portions of an instance will be controlled by the MapRetentionCell command. If
you do not supply a tag, then all registers and latches inferred by that instance will
be controlled by the attribute setting. If you want to include hierarchical instance
children as well, then you must use wild card characters in the instance name.
The tag name may contain wild card characters as well.
-notag true
Specifies that non-retention cells be used for tagged blocks while retention cells
be used for blocks that have no tags.
Example 1
Example 2
Example 3
Example 4
Example 5
Example 6
Example 7
Example 8
Example 9
MonitorArcs
This command specifies the instances and cells for which GAF creation must monitor
the arcs during pin-based power analysis.
Note that arcs are always monitored for the following instances:
IO pads
instantiated memories
non-memory cells containing bus pins
macro combinational cells with 11 or more pins
Syntax
Arguments
-cells cell_names
The list of cell names for which you want power arc monitoring performed. These
cell names can be found in .lib libraries. Cell names can contain wildcard
characters. Separate multiple cell names with a space. You must specify either
this option or the -instances option.
Default: *
-instances inst_names
The list of hierarchical design names for which you want power arc monitoring
performed. names can contain wildcard characters. Separate multiple instance
names with a space.
Default: *
Example
In the following example, arcs are monitored during pin-based power analysis for
instances that are always monitored, instances that begin with the characters
tst.adder and test.exor, as well as cells that begin with the characters df or ld
are monitored normally. For all other cells and instances, monitoring of arcs is
suppressed.
MonitorArcs -instances {tst.adder* tst.exor*} -cells {df* ld*}
MonitorArcs -instances {TOP.#0}
MonitorFast
This command suppresses the generation of the summary report for the top-level
instance during gate-level power analysis when you are running “CalculatePower -
analysis_type time_based”. Only instances specified in MonitorInstances will be
included in the final report and waveform files. If you are only interested in certain
instances, using this command will significantly improve the performance of the
analysis run. The power for all the instances selected will be summed and be
covered in the Total Power section of the report.
Syntax
Arguments
-status yes | no
If set to yes, only those instances specified by the MonitorInstances command will
be monitored. If set to no (the default) the top instance will be monitored along
with the instances specified in the MonitorInstances command.
MonitorInstances
When you are running the CalculatePower -analysis_type time_based option, this
command allows you to specify instances to be monitored, by groups or instance
name(s). You must specify either -group or -name options. Only instances specified
with this command are included in the final power report and waveform files. If you
do not specify this command, PowerArtist will, by default, generate a summary report
for your top-level instance.
Syntax
Arguments
-group group_name(s)
Specifies a group name. These groups are the same clustering of instances that
you see in the power analysis summary section. The legal group names are
Register, Latch, Memory, Other, IO, Clock, and InferredBuffer. By specifying group
names, you will get information summarized for all elements in the group. You can
use a Tcl set for group_name as well. Note that if you want clock power to be
reported when using a monitor instances file, you must include “Clock” in your -
group list.
Default: All groups will be printed along with the top-level instance report.
-name instance_name(s)
Specifies the names of one or more instances that you want to monitor. The
instance could be a hierarchical instance or a vendor gate. Remember that a
vendor gate is anything that has a power model associated with it. Therefore, for
example, it could be a memory, an IO pad or a simple cell like a nand gate. You
could also use Tcl sets for instance_name(s).
-monitor_dynamic_trace true | false
Generates a separate trace for dynamic power.
Default: false
-monitor_static_trace true | false
Generates a separate trace for static power.
Default: false
-all yes | no
Monitors the instances specified with the -name option and all of its children. Note
that in addition to yes/no, you could also use true/false or 1/0. If you use this
option, you must also specify the -name option. By specifying -all and -name
together, it means that from this point on down through the design hierarchy, all
instances are to be monitored. The instances are not only hierarchical modules,
but inferred elements and instantiated library cells as well.
Example 1
Example 2
Example 3
Example 4
Example 5
Example 6
Example 7
MonitorToggleInstances
This command is used to monitor flop clock activity.
Syntax
Example
PrintActivityData
Used in conjunction with the GAF creation, this command generates a file containing
a condensed representation of all the toggle information on the ports of each
hierarchical instance as well as each memory instantiated in the design. PowerArtist
defines a hierarchical instance as any instance in the design that instantiates another
instance. Memories are recognized as vendor_gates that have a complex attribute,
memory, in their corresponding .lib files or are defined as memories using the
DefineMemory command. Note that vendor_gates that are not memories (as well as
inferred instances) are not included in the file.
To generate this file, simply specify this command followed by the CalculatePower
command.
Syntax
Arguments
-activity_file file_name
Specifies the name to be given to the output activity file.
-frequency yes
Specifies that the data be output as a frequency in Hertz (instead of the default
activity data). In this case, the numbers will be in scientific notation.
Example
In this sample file, there are two hierarchical instances in the design: TOP and
TOP.flop1. The hierarchical instance names are enclosed in curly braces {} to
prevent Tcl from evaluating their contents. This would otherwise cause problems in
the case of escaped Verilog identifiers or certain constructs in VHDL. The module
type of TOP is TOP and the module type of TOP.flop1 is dff_A. Each instance has
four ports: d, q, clk, and reset. The activity values are: 0.2, 0.2, 2, and 0, respectively.
Because this file has a Tcl syntax, you can build a Tcl application that implements a
ModuleActivity process that post-processes this file. A sample application is to print
this file out with some simple diagnostic information. Suppose you have a file, act.tcl,
that contained the module activity data. To print the activity data, first create a Tcl file
called, for example, myprint.tcl. The file could contain the following lines:
Then, from within any Tcl shell including ptshell, source the Tcl file:
source myprint.tcl
This would print out the data.
pt_set
You can specify arguments listed for the CalculatePower, CreateGraph, Elaborate,
GenerateActivityWaveforms, GenerateEtclFile, ReadLibrary, ReadSDC,
ReadVerilogStartupFile, ReducePower, ReportReductions, RewriteRTL and
WriteClockGatingConstraints commands using the pt_set command. You can think of
the pt_set command as an alias for the Tcl “set” command that does basic checking
on the values of the variables that you are setting. For example:
Also, you can specify your Liberty technology files as a Tcl list to the appropriate
pt_set variables:
pt_set synlib_files {../libs/hvt1.lib ../libs/lvt.lib ../libs/
retention.lib}
The pt_set command does two different types of checking.
1. If you specify a variable name that does not correspond to the list of legal
variables, it generates a warning like the following:
ptshell % pt_set suppress_warnings grbx
'suppress_warnings' is not a valid PowerArtist variable
2. If you specify a value that is not appropriate for a legal variable, it generates a
warning like the following:
ptshell% pt_set suppress_messages grbx
'grbx' is not of the required type (integer)
Also, if a file is expected to exist and is not readable, it generates a warning like the
following:
ptshell: pt_set capacitance_file foo.cap
capacitance_file: file 'foo.cap' is not readable
Specifying the pt_set command with a variable name but without an appropriate
value, will return the current value of the variable, such as:
ptshell% pt_set suppress_messages {1017 1093 1213 1217}
ptshell% pt_set suppress_messages
1017 1093 1213 1217
As with the Tcl set command, pt_set overwrites the previous value. For example:
The big advantage is that by using pt_set, if you are running similar commands one
after the other, you only have to specify the option once using pt_set. For example,
common options for two different iterations of the CalculatePower command could be
specified using the following pt_set variables:
pt_reset
This command removes any prevous setting and reverts to the default value for the
specified variable.
Syntax
pt_reset variable_name
ReadLibrary
This command specifies your library files in Liberty format. If you specify such a large
number of ReadLibrary commands that the command line generated to perform an
elaboration, power calculation, power reduction or rewrite would exceed the Unix
limits on command-line size, PowerArtist automatically generates a file called
ptshell.libs.opts that contains the Liberty library names. This file then gets referenced
using the -i option to various commands.
Syntax
Arguments
-name lib_file_name
Specifies the path name to the library file from the current working directory.
ReadParasitics
This command associates a given 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). Also, in PowerArtist, periods (.) separate levels of hierarchy.
If you want to use a flow that follows SPEF back-annotation methodologies
established by Synopsys’ PrimeTime™ product, then you need to include this
command in your command file (Tcl script).
Syntax
Arguments
-path hierarchical_inst_name
Specifies the hierarchical path to an instance that you want to associate with the
given SPEF file.
-file SPEF_file_name
Specifies the SPEF file to be associated with the given hierarchical instance.
Example
ReadSDC
This command parses Synopsys Design Constraints (SDC) files, version 1.7, and
generates a new command file script for use with PowerArtist. ReadSDC uses the
following SDC commands to gather information on constraints:
create_clock set_clock_transition
create_generated_clock set_ideal_network
get_clock set_ideal_transition
get_clocks set_input_transition
get_net set_load
get_nets set_max_fanout
get_pin set_propagated_clock
get_pins set_unit
get_port set_units
get_ports set_wire_load_mode
set_clock_gating_check set_wire_load_model
If you have any of the get* commands in your SDC file, you will need to specify a
power database (.pdb). These commands are used to search a power database file
for the appropriate objects and then act on them.
The ReadSDC command also parses the following commands:
set_case_analysis set_logic_one
set_logic_zero
These commands are translated into SetNetStimulus commands and placed into a
vectorless activity (.vaf) file named ReadSDC.vaf. In addition, the ReadSDC file will
add the following line to the output command file:
pt_set vectorless_activity_file ReadSDC.vaf
which points to the newly created VAF file.
After parsing the information from the supported SDC commands, ReadSDC
translates this information into equivalent PowerArtist command file format, which
uses the following commands:
SetClockNet
SetDefaultFanout
pt_set default_transition_time float
pt_set transition_time_file slopes_file
pt_set capacitance_file load_file
SetWireLoadMode
SetWireLoadModel
Flow for Processing SDC Files with an Analysis Run
When you process an SDC file, generally there is not enough information extracted
to perform a correct power analysis because there is not enough clock information
extracted. For example, PowerArtist can determine the clock net name and its
frequency and whether it should be inferred or traced. However, when it is inferred
you need to specify whether or not you want clock gating performed. If clock gating
is to be performed, you need to supply clock gating constraints. Therefore, you
should use the following flow:
1. Translate your SDC file
2. Review and edit the file to correct or potentially add clock information
3. Source the resulting file in your top-level scripts using the Tcl “source” command.
You can use the arguments for the ReadSDC command as pt_set variables (pt_set
arg_name value) in your PowerArtist command file (see Alphabetical List of pt_set
Variables).
Determining Default Units
If your SDC file does not include the set_units command, PowerArtist uses the first
.lib in the Liberty search list to determine the units. Whenever you create a PDB file,
PowerArtist stores the units defined in the first .lib file. Then when you specify the
-power_db_name option to ReadSDC, PowerArtist reads in the power database,
retrieves the options used during the SDC file processing and generates messages
in the ReadSDC.log file to let you know this is occurring. You will recognize this
situation when you see messages 9669 and 9677. Message 9699 is a note that tells
you that set_units is not found in the SDC file. Additionally, message 9677 is a note
that tells you the library units being used.
Sample Notes
9669 NOTE test4.sdc, line 9: command set_units not found in SDC file(s)..
9677 NOTE test4.sdc, line 9: Using library units "-current 0.001 -time 1e-09
-capacitance 1e-12 -power 1e-06 -resistance 1000
-voltage 1".
Syntax
Arguments
Example 1
Example 2
ReadVerilogStartupFile
This command specifies the name of your Verilog startup file. This is the file that you
would supply to the Elaborate command using the -verilog_startup_file option. This
command is available for those users who are familiar with the way other EDA
products define their Verilog files.
Syntax
ReadVerilogStartupFile file_name
ReducePower
This command performs power reduction. For details on running power reduction,
see PowerArtist Tutorial Part II: Power Reduction in the PowerArtist User Guide.
You can use the arguments for this command as pt_set variables (pt_set arg_name
value) in your PowerArtist command file.
Syntax
Common Options
-default_dont_use_cells file_name
Excludes the cells in the given file consideration during the default cell selection
process. The format of the file is as follows:
cell_name library_name
Sample File
DFFRX1 typical_13
TLATX1 typical_13
Note: this option is obsolete. You should use the SetAttribute command instead.
-default_output_load float
Sets the default output load to the specified value. This load capacitance is
applied to all primary outputs not listed in the load or wiring cap files (specified
using either the -capacitance_file or -load_file options).
Default: 0
Alias: -dl
-default_transition_time float
Sets the default transition time to float seconds for any net for which slew is not
specified.
Alias: -dt
-detailed_vertical_report true | false
Generates a detailed vertical power report.
Default: false
-domain_frequency_cell_selection true | false
When set to true, this option activates frequency-based cell assignment. There is
no default value for the -domain_frequency_cell_selection option. When combined
with the -frequency option to the SetClockNet command, this option determines
when frequency-based cell selection occurs. Frequency-based cell selection
occurs in either of the following two situations:
Additionally, even if you do use the default pin-based estimation, you can enable
arc monitoring for specific cells and instances using the MonitorArcs command.
Default: false
-power_tech_file file_name
Specifies a PACE technology file for capacitance estimation. Capacitance
estimation using PACE overrides capacitance estimation using wire load models,
whereas other capacitance annotation methods override capacitance estimation
using PACE. For more information, see Using PACE Technology Files During
Power Analysis (Beta).
-print_missing_sim_nets true | false
Prints the names of nets that are in your scenario file but are not in your
simulation file.
Default: false
-quiet true | false
Suppresses the printing of note-level messages.
Default: false
-reduction_classes list_of_reduction_classes
Specifies the type (or “class”) of reduction to run. By default, all classes are run.
The available classes are:
linter, which includes: Memory Power Linter, MUX Power Linter, Register
Power Linter, and Clock Enable Condition Linter
logic, which includes: Datapath Operator Isolation
memory, which includes: Split Memory Words, Gate Memory Clock
Note: For SplitMemoryWords to run, you must specify the following environment
variable:
PT_APPLY_SMW 1
clock, which includes: Prism, Local Explicit Clock Enable, Low-Activity Non-
Enabled Register, and Observability Don't Care
all, which includes all PowerBots.
If you want to exclude a class, for example, clock, you can specify this option and
simply exclude that class name from the specified list. To further fine-tune your
reduction, you can use this option in conjunction with the -skip_reduction_list
option. For example, you could do the following:
ReducePower -reduction_classes clock -skip_reduction_list prism
Given these settings, PowerArtist will only run the LEC, LNR and ODC
PowerBots.
Alias: -classes
-reduction_cpf_in_file file_name
Specifies an input file for reduction that contains multiple voltage domains and
power gating design intent constraints in the Common Power Format (CPF). For
details, see Using a CPF Input Flow (Beta) in the PowerArtist User Guide.
Alias: -cpf
-reduction_cpf_output_file file_name
Writes out CPF constraints that capture Multi Supply Voltage (MSV) and Power
Shut-Off (PSO) design intent. You can then use these constraints in other tools
such as Cadence’s RTL Compiler™. The resulting file is in ASCII format,
therefore, you can add to or modify the generated CPF commands. The
commands are not expected to capture of all the information required to
synthesize the design and capture all of the information required to synthesize or
place and route your design. For details, see Using a CPF Output Flow (Beta) in
the PowerArtist User Guide.
Alias: -cpf_out_file
-reduction_debug_flags string
Specifies debug flags. For a list of available debug flags, see the pt_set
reduction_debug_flags variable.
-reduction_dont_touch_clocks {clock_net1 clock_net2 ...}
Specifies a list of clock domains that you want to analyze but prevent from being
automatically rewritten. This option interacts with the SetClockNet -gate_clock true
| false option. For details on the effects of this option, see Controlling Clock
Domains During Reduction.
-reduction_dont_touch_modules {module_name1 module_name2 ...}
Specifies a list of modules to exclude from reduction analysis. You cannot use wild
cards in for the module names. The names are the base module type names
before parametrization creates unique names. For example, suppose you have a
parameterized module named “block”. You then instantiate block in the following
manner:
block #(4) blk1(....);
The inferred module type name becomes block(SIZE=4). To prevent block from
being considered for reduction and rewrite, you would specify the following
command:
ReducePower -reduction_dont_touch_modules block
This also affects the rewrite process.
Alias: -dont_touch
-reduction_hierarchy none | full
Controls whether reduction opportunities are allowed to cross hierarchical
boundaries. If you set this to “full” the reduction engine will attempt to find as many
opportunities as possible that don’t cross hierarchical boundaries (for example,
Prism will break register chains at module boundaries and attempt to start a new
chain with a generated enable). If optimization across a boundary is not possible,
the opportunity is still saved for you to see in the GUI but it is not auto-accepted.
The default value for this option is “none” because RTL rewrite does not currently
make RTL changes that cross hierarchical boundaries.
Examples are:
(01 CLK), (01 CLK || 10 CLK), (01 CLK && CS)
d Shows only new deltas on parents in power diff.
e Uses scientific notation.
g Includes net frequency and glitch information.
i Indents hierarchy.
I Outputs load power information for primary input nets.
m Excludes inferred instances.
M Outputs retention flops of the library cell to which the inferred instance mapped.
N Includes net transition time information in report.
p Includes hierarchical parents.
P Includes pin transition time information in report.
r Uses relative percentages in power diff section.
t Prints combined static and dynamic instance power.
u Excludes vendor gates from power and area reports. Note that this option is not
available from the GUI).
v For gates, the is option replaces gate name with vendor_gate in the report.
V Reports power dissipation per power supply.
z Excludes nets with non-zero frequency from reports generated with net
frequency and glitch information (using the -r g option).
Default: (empty)
Alias: -r
-reduction_results_file file_name
Writes power reduction data to the specified results file. This file is needed to use
-compare_with_results option.
-reduction_topology true | false
Controls whether PowerArtist considers power when determining if a reduction
opportunity should be automatically accepted. When set to true, the algorithms for
the Prism and ODC PowerBots will not take power into consideration when
determining whether or not to accept a reduction opportunity.
Default: false—a reduction opportunity is considered only if the total power
savings is positive.
Alias: -topology
-reduction_upf_in_file file_name
Specifies a UPF file as input for power reduction analysis. This is a beta flow.
-save_clock_trees_netlist true
Generates power database schematics for the clock tree in the design.
Default: false
-save_x_nets_file file_name
Creates a file listing any nets that are in an X state during the simulation. This
creates a file with three columns.
Sample Output
count.n29 1 0.000000011000
count.n46 2 0.000000034000
The first column is the signal name. The second column is the number of times
the signal transitions to an X state. The third column is the cumulative time spent
by the signal in the X state. You can use the -allowed_x_time option to set the
tolerance of X detection, that is, the allowable time span beyond which signals
stuck at X get reported. You can sort this file by any of the three columns using
the UNIX “sort” utility, for example:
% sort -r -n -k 2 x_net_file_name
% sort -r -n -k 3 x_net_file_name
-r reverses the order of the result so the largest values are at the top.
-n performs a numerical sort.
-k col_num indicates the column number by which to sort.
Note
Note that enabling X net reporting can increase the run time for GAF creation.
Also, instead of using the default setting of 10 ns, it is recommended that you set
-allowed_x_time to a value that is most appropriate for the simulation. For
example, a reasonable setting might be the period for several clock cycles.
Alias: -save_x_nets
-scenario_file file_name
Specifies a scenario file. If you’re in composite mode, this specifies the root from
which PowerArtist will search for other scenarios.
Default: (none)
Alias: -snc
-skip_clock_analysis true | false
Allows you to run PowerArtist without a SetClockNet command. When set to true,
the clock file is ignored. The default for this options is false. The following
conditions will print warning/error messages:
If you do not set this option to true and you do not specify a SetClockNet
command, you will get the following error message:
Error: Neither a SetClockNet command nor a
skip_clock_analysis option is specified. One of them is
required.
If you set this option but you did not specify at least one SetClockNet
command, you will get the following warning message:
Warning: No SetClockNet command is specified. A
skip_clock_analysis option is specified. Therefore, clock tracing
-voltage float
Sets the design voltage to the specified value.
Default: none
Alias: -v
-wait_for_license true | false
Specifies that PowerArtist wait for a license to become available and to not exit.
Default: false
Alias: -wait
Uncommon Options
-activity_debug_flags value
Prints debug information during activity analysis.
-allowed_x_time string
Specifies an amount of time a net can be in an X state continuously (not discrete).
Specifies an amount of time a net can be in an X state continuously (not discrete).
If any signal is in X state (continuously) for more than the time specified with -
allowed_x_time then it is reported as WARNING 3344. For example:
#0
0$
#10
x$
#20
0$
#30
x$
#40
0$
#50
x$
#60
0$
#70
x$
-allowed_z_time string
Specifies an amount of time a net can be in an Z state. If string ends with the
letter “s”, it is specified as time, otherwise it is specified in simulator ticks. The nets
that exceed the allowed time in the Z state are reported in a text file (see -
ftn_report).
Default: 100ns
-capacitance_file file_name
Reads the specified file as a back-annotated inter-module wire capacitance file.
See Capacitance File Format for more information.
Default: (none)
Alias: -c
-check_synlib_semantics true | false
Performs semantic checks on specified Liberty files.
Default: false
-compare_with_results file_name
Reads the specified result file and prints a report section showing the difference in
power between the result file and the current analysis.
Alias: -diff
-count_glitches_as_toggles true | false
In average mode, counts zero-duration glitches as toggles.
Default: false
-critical_messages tcl_list_message_ids
Specifies a list of message IDs to be flagged as critical. If PowerArtist encounters
these message numbers, they are highlighted as critical in the final message
summary. Note that when you specify a message ID list, it will overwrite the
current list of critical messages. If you want to maintain the default list and simply
add to it, you must include the message IDs that are considered critical by default.
Default: "1371 1409 1425 2034 2046 2089 2818 2859 3331 3332 3344 8309
8517"
Alias: -critical_msgs
-current_output_file file_name
Writes out the average current per instance to a file named current_output.tcl (by
default).
-debug_instances_file file_name
Selectively enables debug messages for instances specified in the given file. The
format of the debug file is as follows:
-xdebug_switches
full_hierarchical_leaf_level_instance_name1
full_hierarchical_leaf_level_instance_name2
...
The simulation time in the messages is approximate to the heartbeat because you
must have simulation signal change results in your IAF file that occur
approximately every heartbeat.
Default: (none)
-html_report_directory dir_name
Specifies a collection directory that allows for the organization of HTML reports
from various executions or designs, into a single HTML page. You can collect all
HTML reports in a central location. This option writes HTML files into the specified
directory. The top-level file is named index.html. This option must be used with the
-average_html_report_title argument.
Default: (none)
contain wire load models. This option is obsolete, use the SetWireLoadModel
command instead.
RefineConfigurationParameter
This command allows you to set the specific default cell to be used for any of 9
combinations of load and frequency. This command gives you more explicit control
over your default cells than the SetConfigurationParameter command. For each cell
type, you will normally choose either to use the SetConfigurationParameter or the
RefineConfigurationParameter. If you use both, then the SetConfigurationParameter
command provides the defaults for any of the 9 ranges that are missing in the
corresponding RefineConfigurationParameter command.
Syntax
Arguments
load_frequency_range
Specifies one of the following: LowFast, LowNormal, LowSlow, MidFast,
MidNormal, MidSlow, HighFast, HighNormal, HighSlow.
cell_type
One of the 6 required cell types or 4 optional cell types that you are defining as a
default cell.
The required cell types are:
DefaultFlop—Default flip-flop cell without clear (you can use the
DefaultFlopWithClear instead).
DefaultInv—Default inverter.
DefaultMux—Default 2-input encoded multiplexor (2 data inputs, 1 select input).
DefaultNand—Default 2-input Nand cell.
DefaultXor—Default 2-input Xor cell.
DefaultLatch—Default latch cell.
The optional cell types are:
DefaultFlopWithClear—Default flip-flop cell with clear. You can use this
parameter instead of the DefaultFlop parameter.
DefaultTriStateDriver—Default tri-state buffer (1 data input, 1 active-high enable
input).
DefaultFullAdder—Default full adder cell (3 inputs (A, B, Cin) and 2 outputs
(Sum, Cout)).
remap
This command directs GAF creation to apply the simulation waveform from the first
signal to the second signal. This command has two different syntactical forms.
Syntax 1 can be used to do a direct re-mapping of the simulation waveform. In
Maxsim (and some other SystemC simulators), control signal traces are not
represented as they would appear in an event-based RTL or gate-level simulation.
Specifically, these signal value changes may be asserted some time before the
corresponding RTL signal is to change, and the de-assertion of the these signals
may not appear in the value change dump file. Syntax 2 provides a means of
correcting the mapping.
Syntax 1
Syntax 2
Arguments
–from path_1.signal_1[range1]
Specifies the signal from which the waveform will be taken. The specified path_1
is the hierarchical scope that contains signal_1 in the VCD file. The signal must be
either a vector or a scalar. If they it is a vector, then the vector range must be
specified after the signal name.
-to path_2.signal_2 [range2]
Specifies the signal to which the waveform will be applied. The specified path_2 is
the hierarchical scope that contains signal_2 in the scenario database. The signal
must be either a vector or a scalar. If they it is a vector, then the vector range must
be specified after the signal name.
-asssert_after time_value
Delays all change records to the specified RTL signal by the specified time value.
-deassert_after time_value
-deassert_value simulation_value
If -deassert_after and -deassert_value are specified (they must be specified
together), the simulation_value will be deposited to the RTL signal by the
given time_value after the assertion occurs for each value change encountered.
If -assert_after is not specified, then the assertion occurs at the simulation time
specified in the VCD file. Note that time_value is an integer quantity of simulation
time, in the same units as appears in the VCD trace file; and simulation_value is a
valid scalar or vector simulation value.
Example 1
Example 2
Example 3
$dumpvars
b0 _a1
#20
b1100 _a1
#30
b1010 _a1
#40
b0001 _a1
The following illustration shows the value changes recorded by Maxsim, and how
they are interpreted in PowerArtist, considering the effects of the assertion and de-
assertion options to the corresponding remap command.
Original Trace
top.aa
20 30 40
PT-ESL Trace
top.aa b1100 b1010 b0001
25 35 45
ReportReductions
This command generates a CSV (Comma-Separated Values) file of the reductions in
the design. This format is used for the digital storage of data structured in a table of
lists. The command separation character can be replaced with other characters such
as the + sign (the default for this command). You can use this format for bringing
data into spreadsheets or graphing tools.
Syntax
Arguments
-power_db_name file_name
Specifies the file name of the power database file.
Alias: -pdb
-reduction_report_csv_file file_name
Specifies the name of the CSV file that will contain power analysis results.
Alias: -csv
-reduction_report_csv_separator symbol
Specifies the separator character used in the CSV file. You can use any printable
separator character; however, when choosing the separator character be mindful
of the content of the data set and the final tool into which you will import the data.
Default: , (comma)
Alias: -csv_sep
-reduction_report_instance instance_name | *
Specifies the names of instances for which you want to report power analysis
results. You can use glob-style wild card characters. If not specified, all instance
reductions will be reported.
Default: * (all)
Alias: -instance
-reduction_report_log_file file_name
Specifies the name of the log file for this command.
Default: ReportReductions.log
Alias: -log
-reduction_report_module module_name | *
Specifies the name of module for which you want to report power analysis results.
You can use glob-style wild card characters. If not specified, all instance
reductions will be reported.
Default: * (all)
Alias: -module
Example 1
Example 2
Example 3
Note: The lines in the sample CSV files have been truncated on the right side to fit
the available space.
RewriteRTL
This command performs automatic rewrite of your RTL for any scheduled updates.
Generally, any options you specified to the Elaborate command that have
equivalents in the RewriteRTL command should be specified with the exact same
values. For details on how to use this command, see Rewriting Your RTL.
You can use the arguments for this command as pt_set variables (pt_set arg_name
value) in your PowerArtist command file.
Syntax
Arguments
–verilog_startup_file file_name
Specifies the Verilog startup file. The Elaborate command recognizes and
expands UNIX environment variables that appear in this startup file. You can
specify environment variables either with brace delimiters as in “${VARNAME}” or
without, as in “$VARNAME”. If you do not use brace delimiters, the variable name
is considered to end with the last alpha-numeric or underscore (_) character.
Environment variables within comments are not expanded. If there is no definition
for a variable required in the startup file, an error is reported and the program will
terminate with error status.
-top top_module_name
Specifies the top-level module name.
Default: (none)
-power_db_name file_name
Specifies the file name of the power database file.
Alias: -pdb
-elaborate_write_power_db true | false
Writes to the power database. When set to true, the rewrite process will update
the OpenAccess database representation of the hierarchical netlist of your design.
Default: false
Alias: -write_pdb
-black_box_modules module_names
Black-boxes the given modules, specified using a Tcl list, and their hierarchical
children.
Alias: -blackbox
-case_insensitive true | false
Uses case-insensitive name matching. 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 combination of VHDL and Verilog.
Default: -case_insensitive false
-case_sensitive true | false]
Uses case-sensitive name matching. By default, the scenario database is
constructed to be case sensitive if the design is entirely in Verilog, or case
In this case, you would use the following option specification to turn off the
translate_on/translate_off directives:
-elaborate_ignore_directives {quickturn synopsys}
-ignore_translate_off true | false
Ignores translate_off and translate_on meta comments in all files.
Default: false
-ignore_translate_off_files file_name1 file2_name2...
Specifies a Tcl list of files in which to ignore the translate_off and translate_on
meta comments.
-output_report_file file_name
Specifies the file name containing the names of the modified files. The
output_report_file lists the file names in a simple format:
Default: output_startup_file.rpt
original_file_name new_file_name
For example, from the tutorial, a sample output_report_file is:
#
# Original_RTL_File Power_Optimized_RTL_File
#
../rtl/verilog/RR2P.v rewrite/EXTERNAL/rtl_analysis/rtl/verilog/RR2P.v
-output_rtl_dir_name dir_name
Specifies the directory containing the rewritten RTL directory structure.
Default: ./rewrite
-output_startup_file file_name
Creates a Verilog startup file with the given name.
Default: output_rtl_dir_name/rewrite.vc
-power_db_name file_name
The name of the OADB power database (.pdb) file for the design. Note that you
must specify either a power database file or the scenario file (-scenario_file).
Alias: -pdb
-rewrite_debug_flags string
Prints debug information for the rewrite process. Available debug flags:
F—prints (to your screen) information about the current processing steps
performed by rewrite.
g—prints (to your screen) information related to failed rewrites. This will also
generate files that begin with rw_. Example files include: rw_details.txt,
rw_failed.txt, and rw_stats.txt.
-rewrite_log file_name
Writes an output log file with the given name.
Default: RewriteRTL.log
-rewrite_no_inline_modules true | false
When set true, RewriteRTL generates the pa_modules.v file for PowerBots LNR, FCE
and ODC. Depending on your design, at most, the following modules will be created:
ADS_PA_COMPARE_WITH_ZERO
ADS_PA_NEGEDGED_ADELAY
ADS_PA_NEGEDGED_DELAY
ADS_PA_NEGEDGED_SDELAY
ADS_PA_POSEDGED_ADELAY
ADS_PA_POSEDGED_DELAY
ADS_PA_POSEDGED_SDELAY
The in-lining of the functionality is switched off. When set to false (the default) you
will have module instantiations of the above in your RTL. For example,
< ADS_PA_COMPARE_WITH_ZERO pa_compare_inst( .match(pa_q_lnr_enable), .value(|(q
^ pa_q_lnr_rhs)) ) ;
---
> `ifdef SYNTHESIS
> assign pa_q_lnr_enable = (|(q ^ pa_q_lnr_rhs));
> `else
> assign pa_q_lnr_enable = (0 !== (|(q ^ pa_q_lnr_rhs)));
> `endif
Default: false
-rewrite_reduction_mapping_file file_name
Generates a mapping file that specifies the parameters that can be used to control
each of the reduction opportunities in RTL.
Alias: -reduction_mapping_file
-rewrite_report_file file_name
Creates a report file containing the list of original and new RTL files.
Default: output_startup_file.rpt
-scenario_file file_name
Specifies the scenario file. You must specify either this option or the
-power_db_name option.
-system_verilog true | false
Treats all files in the Verilog startup file (specified with the -verilog_startup_file
option) to be System Verilog files. System Verilog inferencing requires the System
Verilog option to PowerArtist.
Default: false
-use_library_file_names true | false
Allows two Liberty files with same library names in them to be read without any
conflict. The file names become the library names.
Default: false
-verilog_2001 true | false
Enables recognition of Verilog 2001.
Default: false
SetArchitecture
This command allows you to specify micro-architectures for adders and multipliers.
You can set them for the design as a whole, on an instance by instance basis, or for
every instance of a particular module type. You can explore power trade-offs at the
RT level by controlling these micro-architecture assignments.
Syntax
Arguments
Example
SetAttribute
Use this command to set the cell-level dont_touch or dont_use attributes. Their
values must be either true or false (to match that of the Synopsys library).
Syntax
Arguments
-cell cell_name
Specifies a cell name or a Tcl list of cells. Glob-style wild card patterns are
allowed. Not specifying the -cell option is identical to specifying a * wildcard.
-library lib_name(s)
Specifies a library or a Tcl list of libraries. Glob-style wild card patterns are
allowed. Not specifying the -library option is identical to specifying a * wildcard.
-name attr_name
Specifies the name of the attribute. The attributes dont_touch and dont_use are
currently supported.
-value true | false
Specifies the value of the attribute—must be true or false.
Example 1
# marks all of the cells in the supplies library as dont_touch and dont_use
SetAttribute -library {my_lp} -name dont_touch -value true
SetAttribute -library {my_lp} -name dont_use -value true
# unsets some of the cells selectively
SetAttribute -cell { OX1 OX6 A1X1 A1X2 D1QX1 D1QX2 X2X4 D2X1 D2X2 D2X6 SBX1 SBX2 }
-library {my_lp} -name dont_touch -value false
SetAttribute -cell { OX1 OX6 A1X1 A1X2 D1QX1 D1QX2 X2X4 D2X1 D2X2 D2X6 SBX1 SBX2 }
-library {my_lp} -name dont_use -value false
This code example sets all of the cells in a particular library to use the dont_touch/
dont_use attributes and then unset selected cells with subsequent SetAttribute
commands.
Example 2
Example 3
SetBounds
This command defines the ranges for the 9 capacitance load and frequency
“buckets” that you can assign to different cell types using the
RefineConfigurationParameter command in an SLD file. For more information on the
SLD file, see the PowerArtist Library Developers Guide. If you do not use an SLD
file, then the system automatically selects cells from your libraries and assigns them
Syntax
Arguments
If you do not specify “-type load” then the software will determine the boundaries for
load ranges and on this basis, categorize cells in three buckets LOW, MED, HIGH.
By default, the following apply:
low_bound = 6*smallestTypicalNandLoad
high_bound = 16*smallestTypicalNandLoad
The system automatically determines the smallestTypicalNandLoad as being the
most typical input pin capacitance of a typical nand.
If you do not specify the “-type frequency”, option the software automatically
categorizes each clock as SLOW, FAST or NORMAL based on the highest clock
frequency vs. other clock frequency. That is,
If the ratio of the frequencies of the fastest_clock/clock < 1.5 it is considered FAST
If the ratio of the frequencies of the fastest_clock/clock > 2.5 it is considered
SLOW
If the ratio of the frequencies of the fastest_clock/clock is >=1.5 and <= 2.5 is it
considered NORMAL
If you specify the “-type frequency” option to the SetBounds command this is
reflected in the debug messages in that you will see a line that starts with “User
Specified...”. Based on this string you can know whether the values used were user
specified or derived by the software. Note that you would set the frequency values
for each clock using the -frequency option to the SetClockNet command.
Example 1
Example 2
SetBuffer
This command specifies buffers when inferring a buffer tree for high fanout nets. This
command is very similar to the SetClockBuffer command. Note: If you do not specify
buffers using the SetBuffer command in the clock file, but there are clock buffers set
with the SetClockBuffer command, then these buffers are used for net buffer
inferencing.
Syntax
Arguments
-fanout buffer_fanout
Specifies the maximum number of standard loads the buffer can drive. Input pins
are taken into consideration as a load. Specifies the maximum number of standard
loads the buffer can drive. If this option is not specified, the max_capacitance and
max_fanout attributes for the cell in the .lib are used to determine the number of
loads the cell can drive.
-wlm_scale_factor float
Defines the scaling factor by which the wire capacitance for a particular level is
scaled. It applies to all capacitance estimation methods including wire load models
and PACE capacitance estimation. It is a real number greater than 0. If the wire
load model says that your wire capacitance for this net would be X, specify a
value of factor*X instead of using the default.
Default: 1.0
Missing buffers of all types (leaf, branch and root) will default to buffers of other types
in the following manner.
If leaf buffers are required and not found in the clock file, the software will use
branch buffers if available; otherwise, it will use root buffers.
If branch buffers are required and not found in the clock file, the software will use
leaf buffers if available; otherwise, it will use root buffers.
If root buffers are required and not found in the clock file, the software will use
branch buffers if available; otherwise, it will use leaf buffers.
SetCapEstimation
This command instructs PowerArtist to use the default wire load model library that is
part of the PowerArtist installation for capacitance estimation. Rather than using
these defaults, you should consider using PACE models as described in Generating
PACE Technology Files (Beta) and Using PACE Technology Files During Power
Analysis (Beta).
This is useful for libraries that do not contain associated wire load information. If
PowerArtist cannot find a library containing wire load models, the analyzers will use
the following default command to ensure that wire load models will always be found:
SetCapEstimation -technology 90 -scale 1
This command will select the “default_wire_load : “SEQ_90_4;” attribute in the
seq_cap.lib.
For more information on how to use this command, see the section Using Apache
Default Wire Load Models for Capacitance Analysis.
Syntax
Arguments
-technology technology_size
Specifies the technology size from the following acceptable values: 180, 150, 130,
90, 65, or 45.
-scale scale_factor
Specifies a decimal number that is used to scale the capacitance number
retrieved from the wire load model.
Default: 1
-area_scale scale_factor
Specifies a decimal number that is used to scale the design area so that it
matches the area units in the default wire load model.
Default: 1
Example 1
SetCapEstimation -technology 90
For this example, PowerArtist will search the seqcap.lib file (which is located in
$POWERTHEATER_ROOT/sfl_lib/generic/seqcap.lib) for a wire_load_selection
table named SEQ_90_Area. Based on the area of the module (if you specified the
“enclosed” mode) or of the design (if you specified the “top” mode), PowerArtist will
locate the correct wire_load_from_area to determine the correct wire load model.
This wire load model will be of the form SEQ_150_#, where # ranges from 1 to 7.
The wire load models are built with the assumption that the areas in your .lib files are
specified using square microns. Note that you can not use this technique if your
areas are not defined in your libraries as square microns.
Example 2
SetCCommentsIgnore
Use this command to instruct PowerArtist to igmore C-style comments in the SPEF
file. A sample line that contains a C-style comment is:
*NAME_MAP
*1931 buffer/read_rc1/buf_rp_read/*suffix*/a
If you are ignoring C-style comments, the exact string is taken as the net name.
Syntax
SetCCommentsIgnore
SetCellDefaultFanout
Use this command to set the maximum fanout for a cell in the clock path. The default
fanout value is 8.
Syntax
Arguments
-cell cell_name
Specifies the name of a cell in the clock path (can contain standard UNIX wild
card characters).
-library lib_name
Specifies the name of the logical library in which the specified cell exists (can
contain standard UNIX wild card characters).
-fanout fanout_value
Specifies the maximum fanout for all output pins of the specified cell. The default
fanout will be used for each output pin of the cell that does not have a maximum
fanout attribute. This value does not override a maximum fanout attribute. In the
Liberty format, this information is specified using the max_fanout attribute.
Example
SetClockBuffer
Use this command to specify clock buffers when you want to infer a clock tree (tree
is the only topology PowerArtist supports).
Syntax
Arguments
Missing buffers of all types (leaf, branch and root) will default to buffers of other types
in the following manner.
If leaf buffers are required and not found in the clock file, the software will use
branch buffers if available; otherwise, it will use root buffers.
If branch buffers are required and not found in the clock file, the software will use
leaf buffers if available; otherwise, it will use root buffers.
If root buffers are required and not found in the clock file, the software will use
branch buffers if available; otherwise, it will use leaf buffers.
SetClockGatingRegisters
You can use theis command (or equivalent) to specify registers to exclude from clock
gating. In general, you will be using this command if you want to perform correlation
studies between RTL and a synthesized gate-level netlist where you have used the
set_clock_gating_registers -exclude command (in PowerCompiler) to restrict the
registers that are clock gated. To get good correlation, you will need to perform the
equivalent operation while doing RTL power analysis. You may also want to use this
command if you know early on in your RTL design process that certain signals will
not be gated due to strict timing constraints.
Syntax
Arguments
-exclude_instances signal_names
Specifies a Tcl list of hierarchical signal names to be inferred as registers in your
design. If you do not use this command, then generally, all registers that meet the
min_bit_width constraint are clock gated. You can use wild cards in the list of
signal names.
Example 1
Example 2
SetClockGatingStyle
Use this command to define the attributes that control how clock gating is performed.
Syntax
Arguments
-min_bit_width bit_width
Specifies the minimum number of bits a register bank must have to be considered
for clock gating.
Default: 3
-max_bit_width bit_width
Specifies a limit (maximum) on the number of register clock pins, a single inferred
clock gating cell is allowed to drive in the clock path. For details on how this option
specification is used by PowerArtist, see Clock Gating Algorithm.
-min_bit_width_ecg bit_width
Specifies the minimum number of register bank bits that must have a common
enable to be considered for enhanced clock gating. For more information, see
Performing Enhanced Clock Gating.
Default: Twice the value specified by the -min_bit_width option.
-clock_cell_attribute gating_cell_type
Sets the value of the clock_gating_integrated_cell attribute for which PowerArtist
will search to determine candidate clock gating cells. This argument is generally
required—it is optional only if the -gating_cells option is specified.
-gating_cells gating_cell_name(s)
Specifies clock gating cell(s). If this option is specified along with the
-clock_cell_attribute option, this option takes precedence.
-structure branch | leaf]
Used when you supply PACE models, this option determines whether ICGCs
should directly fanout to registers (leaf) or fanout to buffers that then drive
registers (branch). You can use this option in increase analysis accuracy if you
understand what will happen during CTS and optimization of your design. By
default, the value of this option is determined when the PACE model is created. It
is then applied to your design.
Example 1
Example 2
SetClockGroups
This command defines a set of clocks as synchronous. Without this command, the
ODC and Prism PowerBots are unable to recognize groups of clocks as synchronous
and, therefore, may reject some opportunities as a Clock Domain Crossing (CDC)
case. By defining groups of synchronous clocks, the ODC and Prism PowerBots will
accept opportunities that cross these domains and not consider them as CDC cases.
You need to specify separate SetClockGroups commands for each group of
synchronous clocks.
Syntax
Arguments
list_of_clocks
Specifies a Tcl list containing two or more clock net names. Each clock net name
may be in only one group.
Example
SetClockNet
Use this required command to specify a clock net in the design. If you selected the
infer mode, you will need to supply additional information with the SetClockBuffer
command.
Syntax
Arguments
Pad Power. Otherwise, they will appear in both sections and power will be
reported in both the sections.
-frequency float
Specifies the operating frequency in Hz for the specified clock. If you do not
specify this option, the clock will be considered to be a fast clock.
-gate_clock true | false
Specifies that the net should be gated. Without this option, no gating will be
performed on this net. For more information on clock gating, see Setting up Clock
Gating for Power Analysis.
Default: false—no clock gating is performed.
-hierarchical inst_name(s)
Specifies a Tcl list of hierarchical instance names. For more information on using
this option, see Hierarchical Clock Gating in the PowerArtist User Guide.
-instance inst_name(s)
Specifies a Tcl list of instance names. For more information on using this option,
see Hierarchical Clock Gating in the PowerArtist User Guide.
-senses 1 | 2
Specifies the number of clock senses that have to be routed in the design for this
net. If this net provides both a normal and inverted clock, you should specify this
number as 2. If it provides only one type of clock—either normal or inverted—
specify this number as 1.
Default: 1
-stop_at_cell cell_name(s)
Specifies a list of cell types, from your library, at which the clock tracer is to stop.
You can specify a regular expression to match multiple cell names.
-stop_at_instance inst_name(s)
Specifies a list of instances at which the clock tracer is to stop. All instances
traced up to, but not including these instances are made part of the traced clock
tree. You can specify a regular expression to match multiple instance names.
-trace_domain true
Enables the tracing of clock domains.
Example
SetConfigurationParameter
This command provides a simple method for setting your default cells. In addition,
you can use this command to define default wire load models, technology-specific
SLD parameters and clock buffers. However, this use has been obsoleted by other
technology and will only be described for historical completeness.
Syntax
Arguments
cell_type
One of the 6 required cell types or 4 optional cell types that you are defining as a
default cell.
The required cell types are:
DefaultFlop—Default flip-flop cell without clear (you can use the
DefaultFlopWithClear instead).
DefaultInv—Default inverter.
DefaultMux—Default 2-input encoded multiplexor (2 data inputs, 1 select input).
DefaultNand—Default 2-input Nand cell.
DefaultXor—Default 2-input Xor cell.
DefaultLatch—Default latch cell.
The optional cell types are:
DefaultFlopWithClear—Default flip-flop cell with clear. You can use this
parameter instead of the DefaultFlop parameter.
DefaultTriStateDriver—Default tri-state buffer (1 data input, 1 active-high enable
input)
DefaultFullAdder—Default full adder cell (3 inputs (A, B, Cin) and 2 outputs
(Sum, Cout))
DefaultPassGate—Default passgate used in datapaths instead of a tri-state
driver
cell_name
The actual technology library cell name.
lib_name
The logical library name containing the default cell. One SLD file can contain
references to multiple library names. You would specify the physical file locations
of these libraries using a command file (that includes the ReadLibrary command)
or a -synlib_files command option).
SetDatapathWidth
This command specifies the minimum width (in bits) of a candidate register. It is used
with the Prism PowerBot.
Syntax
SetDatapathWidth width_num
Default: 8
SetDefaultFanout
Use this command to set the fanout value of an instance of a clock driver. This
command takes the highest priority when setting the fanout value. Specifically, the
priority order, from highest to lowest, for setting the fanout value is as follows:
SetDefaultFanout command
max_fanout of the output pin
max_capacitance of the output pin
default_max_fanout from the library scope
default_max_capacitance from the library scope.
SetCellDefaultFanout command
Syntax
Arguments
Example 1
Example 2
SetExcludeModules
Use this command to specify a list of modules to be excluded from analysis by the
Prism PowerBot. The list of modules is a Tcl list of module names. The analysis for
candidate registers is always done across all modules. Candidate registers found in
the excluded modules list will not be reported in the results.
Syntax
SetExcludeModules {list_of_modules}
SetHighFanoutNet
You must use this command to specify the maximum fanout on a net. Any net with at
least the given number of fanouts will have a buffer tree. If no SetHighFanoutNet
command is found in the clock file, then by default “SetHighFanoutNet -fanout 9” is
applied.
Syntax
Example
SetHighFanoutNet -fanout 10
This command will result in buffer tree inference for all nets with fanout greater than
or equal to 10.
SetIncDirPath
This command specifies directories that can be searched to locate include files for
Verilog designs. This is used in conjunction with the CompileFile command.
Syntax
SetIncDirPath dir_name(s)
SetInstanceStimulus
Note: This command is obsolete and will be removed in the future.
This command sets the frequency, duty cycle and activity of all the input and output
ports of the instance. The instance may be either a hierarchical instance or a leaf-
level instance. If it is a hierarchical instance, then all of the ports of all instances
including leaf instances will be set to the specified values. This command is part of
the Vectorless Activity File (VAF). You do not specify this command directly in a
command file. For more information on the VAF, including a sample file, see
Vectorless Activity File Format.
Syntax
Arguments
-instance inst_name
Specifies the name of either a leaf-level or hierarchical instance in the design.
-frequency avg_freq
Specifies the average frequency of the signals on the input and output ports. A
positive frequency value will override any value specified with the -activity option.
-duty avg_duty
Specifies the average duty cycle of the signals on the input and output ports. If the
duty cycle is not specified, all the input and output ports of the leaf-level instances
are assigned the default duty cycle (0.5).
Default: 0.5
-activity activity_value
Specifies the average activity of the signals on the input and output ports.
Default: 0.4
SetLibrary
This command defines which libraries can be used for power analysis for specified
instances. The libraries associated with an instance are inherited from its parent
instance unless explicitly overridden by this command. The root instance by default
accepts the entire set of libraries supplied using the -synlib_files command option.
The libraries are searched “first in” for cells. Libraries specified using the SetLibrary
command are searched left to right in the list as are libraries specified using a -
synlib_files command option.
Syntax
Arguments
-domain domain_name(s)
Specifies a list of domains in which all instances use cells from the specified
library list. This option is required only if you are using the Common Power Format
(CPF)-out flow. If you use the -instance option in a CPF-out flow, it will be ignored.
-instance inst_name(s)
Specifies a hierarchical path to a particular instance. You can also specify a Tcl list
of instance names. Each instance name may also include standard Tcl wild card
characters. Be careful when using wild cards as they could end up matching a
huge number of instances in the design. This is required for non-CPF flows.
-library {lib_name2 lib_name2 ...}
Specifies a Liberty logical library name(s) from a library that has been specified by
either the -synlib_files command option.
Example 1
stdcell2_.8V.lib
library (stdcell2) { ...}
Example 2
SetMemoryGatingCell
Specifies a list of clock-gating cells for the memory gating power reduction technique
performed by the Gate Memory Clock PowerBot. Each element in the Tcl list is a pair
of the logical library name separated by a colon (:) from the cell name.
In the absence of this command, GMC will take the clock-gating cell from the register
clock-gating command SetClockGatingStyle. If neither command is specified,
PowerArtist will instantiate a discrete gating circuit.
Syntax
Example 1
SetNameMapFile
Use this command to specify the name of the name mapping file to be used when
processing your activity stimulus file while using a name mapping flow as described
in Name Mapping Flow. This command supports two formats.
Syntax
Arguments
-map_file file_name
Specifies either a Conformal™ “do” file or a map file containing remap commands.
-format conformal | pt
Specifies the format of the map file. Specify “pt” to directly use remap commands
with the wwgaf utility.
Example
SetNetStimulus
Use this command to specify the signal frequency, duty cycle and activity for a given
net. Each net must be declared with a separate command, on a separate line. This
command is part of the Vectorless Activity File (VAF). You do not specify this
command directly in a command file. For more information on the VAF, including a
sample file, see Vectorless Activity File Format.
Syntax
Arguments
-net net_name
Specifies the name of the net for which you are setting the frequency. This may be
a wild card in which case all nets matching the wild card will be set to the
appropriate values. With wild cards, the search will match all hierarchical net
names. Therefore:
-net a.b.c*
will match the following:
a.b.c1
a.b.c.d
Further, vectors are easily searched by specifying only the vector base name. For
example, if “d” is a vector with bits 0 to 31, specifying the following will match all
the bits of the bus:
-net a.b.c.d
Because it contains no wild cards, it would not match the following:
a.b.c.d1
-frequency freq_value
Specifies the frequency of the signal on the specified net. If a positive frequency
value is given, it overrides the value specified with the -activity option. Frequency
values should be specified in Hz; therefore, 2MGz would be 2e+06. Specify either
-frequency or -activity but not both.
-duty duty_cycle
Specifies the duty cycle of the signal on the specified net. Duty cycle values are
real numbers from between 0 and 1, inclusive. A value of 0 mans that the net is
always 0. Conversely, a value of 1 means that the net is always 1. A value of 0.5
(the default) means that a net spends 50% of its time at 0 and 50% of its time at 1.
Default: 0.5
-activity activity_value
Specifies the activity (rise and fall) of the signal on the specified net. Activity
values are real numbers from between 0 and 1, inclusive. A net that toggles once
per clock cycle would have a value of 1. A net that never toggles will have an
activity of 0. If neither frequency nor activity is specified, the net is assigned an
activity of 0.4 (the default value). Specify either -frequency or -activity but not both.
Default: 0.4
Example 1
Example 2
Example 3
Example 4
SetPortStimulus
Use this command to specify the duty cycle, activity, and frequency of a port of a
specified RTL inferred instance or a gate instance in the design. This command is
part of the Vectorless Activity File (VAF). You do not specify this command directly in
a command file. For more information on the VAF, including a sample file, see
Vectorless Activity File Format.
Syntax
Arguments
-instance inst_name
The name of an instance in the design. The instance may be an RTL inferred
instance or a gate-level instantiation.
-port port_name
Specifies the name of a port on the specified instance. This may be a wild card, in
which case, all ports matching the wild card will be set to the appropriate values.
-frequency port_freq
Specifies a frequency of the signal on the specified port. A positive frequency
value will override any value specified with the -activity option. Frequency values
should be specified in Hz; therefore, 2MGz would be 2e+06.
-duty avg_duty
Specifies the duty cycle of the given instance.
Default: 0.5
-activity activity_value
Specifies the activity of the signal on the specified port.
Default: 0.4
-type {input | output | both}
Specifies the direction of the port. A value of “both” means it could be either an
input or an output port.
Example 1
Example 2
You can also combine general purpose netlist commands and property commands
from SPL to perform some very useful functions. For example, suppose you want to
set the read frequency for a number of similarly named memories. Suppose further
that all of your memories were instantiated as dram followed by some integer
number. You could put the following Tcl fragment into your .vaf file:
set mems [GetInstances -name .*\.dram[0-9]*]
foreach mem $mems {
SetPortStimulus -instance $mems -read 3e+06
}
Example 3
Example 4
SetPower
You can use the SetPower command to specify power values for any leaf-level
instance in your design. This command primarily targets blackboxed instances for
which there are no calculated power numbers. You may have blackboxed an
instance because you do not have a power model for the device in your technology
library. This often occurs for analog components. You may also have a very large
design that you want to break into pieces for power analysis but still have an
automatically rolled-up power number. In this latter case, you would perform the
power analysis on the sub-block, extract the power values, black-box the sub-block
in the context of your total design and then assign the values to that instance.
You can also use this command to override the computed power value for a
particular instance.
Syntax
Arguments
-module module_name
Specifies a module type name or a Tcl list of module names. You can use wild
cards. PowerArtist will generate a list of hierarchical instances whose module type
name matches the module name string. You can also specify an inferred module
name which you can retrieve from an ASCII netlist or, from a power analysis
report or using a variety of different features of the user interface.
-instance instance_name
Specifies a hierarchical instance name or list of Tcl instance names. You can use
wild cards.
-static static_power
Specifies a real number >= 0 that represents the static power for the instance.
Default: 0.0W
-dynamic dynamic_power
Specifies a real number >= 0 that represents the dynamic power for the instance.
Default: 0.0W
This command supports engineering notation for the static and dynamic power
values. If you do not use engineering notation, PowerArtist assumes a default unit of
Watts.
Example 1
Example 2
Example 3
The reports generated by the power analyzers will mark with an (F) any instances
with power values forced by the SetPower command (in the same way that clock
gated instances are marked with a (G)). If you display a schematic in Explorer,
PowerCanvas or PowerArtist, you will see a new property, Forced_Power_Values, in
the tool tip for any such instance.
Sample Report
SetPowerTarget
Use this command to specify power constraints for specific instances. These are
written out to the CPF output file, but are not used in any other way by PowerArtist.
Syntax
Arguments
-instance inst_name(s)
Specifies the instances for which the specified static and/or dynamic power values
apply. If you do not specify this option, the specified power value will apply to the
top-level module of the design.
-static static_power
Specifies a static power target value. You must specify either this option or the -
dynamic option (or both).
-dynamic dynamic_power
Specifies a dynamic power target value.
Example
set_power_unit mW
set_instance i1
set_design mod1
set_power_target -leakage 0.035 -dynamic 0.15
end_design
set_instance i3
set_design mod3
set_power_target -leakage 0.035 -dynamic 0.15
end_design
set_power_target -leakage 5 -dynamic 7
SetPowerTechComments
Use this command to add user information/comments to your PACE model file when
you generate it. You simply specify a string to this command, which would include
the new line (\n) and tab (\t) characters. For more information on how to use this
command and an example, see Adding Comments to the PACE Model.
Syntax
SetPowerTechComments “string”
Example
SetSpefFiles
Use this command to provide a list of SPEF file(s) to the SPEF reader for
processing. The SPEF reader performs a rapid “read” of these files to determine
their associated design names. These design names must later be referenced in
*DEFINE statements following the SPEF specification. Do not use this command if
you are using the ReadParasitics command. You must use this command in
conjunction with a SetTopSpef command (next). It is recommend that you use the
ReadParasitics command instead of this methodology.
Syntax
SetSpefFiles file_name(s)
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. Do not use this command if you are using the ReadParasitics command. You
must use this command in conjunction with a SetSpefFiles command (previous). It is
recommend that you use the ReadParasitics command instead of this methodology.
Syntax
SetTopSpef top_design_name
Example
SetVoltageThreshold
Use this command when performing mixed-Vt power analysis to set voltage value
strings on library cells that match a given pattern. You only need to use this
command if your libraries do not categorize cells using Liberty threshold voltage
attributes. For more information on running a mixed-Vt power analysis flow, see
Running RTL Mixed-Vt Power Analysis in the PowerArtist User Guide.
Syntax
Arguments
-group threshold_group
Specifies the name of a threshold voltage group.
-pattern cell_pattern_list
Specifies a Tcl list of patterns. The cell names in the supplied libraries matching
any of the patterns will have the threshold voltage group as specified by the -
group option.
Example
SetVT
This command is required when performing mixed-Vt power analysis. It assigns, for
each hierarchical instance in your design, the percentage of each type of threshold
voltage that should be used for all inferred elements in a specified instance and in all
of its children.The threshold voltage types come from the settings of the following
Synopsys Library Compiler™ attributes:
At the library level:
default_threshold_voltage_group : "<string>" ;
At the cell level:
threshold_voltage_group : "<string>" ;
Your libraries must be characterized with these attributes; PowerArtist uses the
supplied strings to differentiate threshold voltages for mixed-VT power analysis.
Syntax
Arguments
-mode percentage
Specifies a “percentage based” mixed-VT power analysis technique. This is
currently the only technique available. This means that you can assign for each
hierarchical instance in your design, the percentage of each type of threshold
voltage that should be used for all inferred elements in that instance and in all of
its children.
-instance {instance_list}
Given a list of instances, PowerArtist will assign the percentage of each type of
threshold voltage that should be used for all inferred elements in the specified
instance(s) and in all of their children.
-vt_group {threshold_group_list}
Specifies a Tcl list of Liberty cell-level threshold_voltage_group attribute values
along with their respective percentages separated by colons (:). The sum of the
percentages must be 100%. There may be any number of elements in
thethreshold_group_list.
Example
SetWireLoadMode
This command sets the wire load mode of the design. This command is used in
conjunction with the SetWireLoadModel command. You can use both the
SetWireLoadMode and SetWireLoadModel commands in a command file. For more
information on how this command fits in with the SetWireLoadModel command, see
Specifying Wire Load Models.
Syntax
Arguments
top
Sets the same wire load model on all hierarchical instances based on the area of
the entire design.
enclosed
Sets the wire load models on all hierarchical instances based on their area values.
This is the default value.
Examples
SetWireLoadMode top
SetWireLoadMode enclosed
SetWireLoadModel
This command defines the wire load models for instances and nets. This command
is used in conjunction with the SetWireLoadMode command. You can use both the
SetWireLoadMode and SetWireLoadModel commands in a command file.
Syntax
Arguments
-name
Specifies the name of the wire load model.
-library lib_name
The logical library name which should be searched for the wire load model given
with the -name option. If you do not specify a library name, the estimators will use
the library specified using the -wireload_library command-line option. If that is not
found, then it will search all of your libraries specified using the -synlib_files
command option for a wire load model.
-instance inst_name(s)
Specifies a hierarchical instance name or a Tcl list of instances. You may use wild
cards. For each hierarchical instance you specify, the power analyzers will set the
user wire load model on all of the instances that are in that hierarchy. All of the
nets that are fully covered by this hierarchical instance will be given the same
value.
-net net_name(s)
Sets the wire load model on the specified nets only. You can specify a single
hierarchical net name or a Tcl list of nets. You may use wild cards.
-scaling_factor factor
The factor by which the computed capacitance value returned from the wire load
model should be scaled.
Example 1
Example 2
SetWireloadScalingFactor
Use this command to scale the wire capacitance, extracted from a wire load model.
Syntax
Arguments
inst_name
The instance for which you are setting the capacitance scale factor. The applied
capacitance scale factor will be applied to all children of this instance unless a
separate value is applied to them. If you want to define this factor globally, you
should apply it to the top module in the design.
cap_scale_value
The capacitance scale factor (can be any non-negative value).
Default: 1
Example
SetWireloadScalingFactor top 10
SetWireloadScalingFactor top.i1 5
Given this example, all the instances under the top.i1 hierarchy will have a
capacitance scale value of 5. The remaining instances in the design will have a value
of 10.
SetWireLoadSelectionTable
Use this command to specify wire load selection tables from your Liberty files, that
the software will use to calculate net capacitances during a power analysis. In
addition to this command, the following commands also affect wire load models:
SetWireLoadModel, SetWireLoadMode, and SetCapEstimation.
wire_load_selection tables are group selections that specify the wire_load model for
various area ranges that the software uses to estimate capacitance. A typical wire
load selection table looks like the following:
wire_load_selection(SEQ_45_Area) {
wire_load_from_area(0, 8000, "SEQ_45_1");
wire_load_from_area(8000, 18000, "SEQ_45_2");
wire_load_from_area(18000, 39000, "SEQ_45_3");
wire_load_from_area(39000, 75000, "SEQ_45_4");
wire_load_from_area(75000, 134000, "SEQ_45_5");
wire_load_from_area(134000, 268000, "SEQ_45_6");
wire_load_from_area(268000, 537000, "SEQ_45_7");
}
The name of the selection table is SEQ_45_Area. If the area of your design is
between 75000 and 134000, then the software will use wire_load model SEQ_45_5
to estimate capacitance. An example wire load model looks like:
wire_load("SEQ_45_5") {
resistance : 0.00001 ;
capacitance : 1 ;
area : 0 ;
slope : 0.00328 ;
fanout_length(1,0.00036) ;
fanout_length(2,0.00126) ;
fanout_length(3,0.00228) ;
fanout_length(4,0.00310) ;
fanout_length(5,0.00472) ;
fanout_length(6,0.00644) ;
fanout_length(7,0.00752) ;
fanout_length(8,0.00844) ;
fanout_length(9,0.00952) ;
fanout_length(10,0.01280) ;
}
Syntax
Arguments
-name selection_table_name
Specifies the name of the selection table in the technology library specified by the
-library argument. The software generates an error if it cannot find this table.
-library lib_name
Specifies the logical library name of one of your technology libraries. The selection
table you specified must be in this library.
-instance inst_name
Specifies the hierarchical instance name. The selected wire_load group is applied
to this instance and all of its children instances unless specifically overridden by
subsequent SetWireLoadSelectionTable commands.
Default: top instance name
-scaling_factor float
Specifies a value by which any capacitance value calculated by the selected wire
load model should be multiplied.
Default: 1 (no scaling)
Example
TraceThruCell
Use this command to specify the input-to-output path inside of a cell or to override
the existing input-to-output path specified by the timing arcs.
Syntax
Arguments
-name cell_name
All instances of this particular cell type need to be traced. This may contain wild
cards.
-blackbox module_name
Specifies the name of a module that has been black boxed using the Elaborate
command. This may contain wild cards. Either -name or this option should be
used.
-input_pins pin_list
Specifies a Tcl list of input port names of the cell. This may contain wild cards.
-output_pins pin_list
Specifies a Tcl list of output port names of the cell. This may contain wild cards.
-library lib_name
Specifies the name of the library that contains the given cell name. This is the
logical library name rather than the physical library name unless the -
use_library_file_names option (to Elaborate, CalculatePower or ReducePower) is
in effect.
Example 1
Example
TraceThruInstance
Use this command to specify the input-to-output path inside an instance or to
override the existing input-to-output path specified by the timing arcs.
If multiple TraceThru* commands resolve to the same instance, the first one
appearing in the clock file will take precedence. For all subsequent ones, the
following warning is issued:
wsengine: Warning 8501: Instance XYZ has already been assigned
data using the TraceThruInstance command that sets instance
name using pattern XYZ. TraceThru data will not be reset on
instance.
Syntax
Arguments
-instance inst_name
Specifies the hierarchical instance name the clock tracer needs to trace through.
This may contain wild cards.
-input_pins pin_list
Specifies a Tcl list of input port names of the instance. This may contain wild
cards. If -input_pins is not specified, the following error message is issued:
wsengine: Error 8509: The command TraceThruInstance used for
instance name XYZ, must specify switch -input_pins Clock file:
test.clk
-output_pins pin_list
Specifies a Tcl list of output port names of the instance. This may contain wild
cards. If the clock tracer reaches the specified instance via any of the ports
specified in the input pin list, it will trace through to all of the ports specified in the
output pin list. Not specifying -output_pins is equivalent to specifying
-output_pins *.
Example 1
Example 2
WriteClockGatingConstraints
Use this command to generate synthesis constraints to exclude registers from clock
gating. See Generating Synthesis Constraints for more information.
Syntax
Arguments
-power_db_name pdb_file
Specifies the file name of the power database (.pdb) file. This is the only required
argument.
Alias: -pdb
-constraints_savings float
Specifies the target power savings that should be reached by the constraints. This
is a real number in Watts. You can use the CreateGraph command to determine
the value to use for this option.
Alias: -cumulative_savings
-top module_name
Specifies the name of the top module in the design.
-constraints_bus_naming_style string
Specifies how multi-bit register instances are named.
Alias: -bus_naming_style
-constraints_log file_name
Specifies the file name of the resulting log file.
Default: Constraints.log
Alias: -log
-constraints_output_file file_name
Specifies the file name of the resulting constraints output.
Default: output goes to the screen
Alias: -output_file
-constraints_synthesis_tool PC
Specifies the target synthesizer name. Currently, PowerArtist supports only PC
(for PowerCompiler™ from Synopsys™.
Default: PC
Alias: -synthesizer
WriteReductionCompareFile (Beta)
Use this command to read-in power reductions from the reduction database (.pdb
file) and generate a rule file for the nCompare™ waveform comparison tool by
SpringSoft™. This allows you to verify the power reductions changes to your RTL.
Before you can use this command, you must first create a power database using the
ReducePower command. You can use it both before and after rewriting the RTL
(using the RewriteRTL command).
The output rule file generated by this command contains a comparison of only those
signals that are related to an implemented reduction but not affected by that
reduction. Any mismatch in these signals will guide you to the corresponding
reduction. You do not need to start validation from the primary outputs.
For more information on verification of power reduction RTL changes, see
Performing Functional Verification of RTL Changes.
Syntax
Arguments
-power_db_name file_name
Specifies the name of the power database file.
Alias: -pdb
-top_instance sim_top_inst
Specifies the full path to the simulation top instance.
Alias: -topinst
-reduction_compare_output_rule_file file_name
Specifies the name of the output that will contain the generated rules. You will use
this file in the nCompare utility.
Alias: -output_rule_file
-reduction_compare_type rw | auto
Specifies the type of target reductions. Select “rw” to compare all rewritten
reductions or “auto” to compare all accepted reductions.
Default: rw
Alias: -type
-reduction_compare_golden_sim_file file_name
Specifies the path to the original FSDB file. If you do not specify this, PowerArtist
will use a place holder variable (set GoldenFSDB golden_fsdb_name) in the
rules file that you will later need to edit.
Alias: -golden_sim_file
-reduction_compare_secondary_sim_file file_name
Specifies the path to the new FSDB file that you get when you re-simulate your
design using the rewritten RTL. If you do not specify this option, PowerArtist will
use a place holder variable (set SecondaryFSDB fsdb_file_name) in the rule
file that you will later need to edit.
Alias: -secondary_sim_file
-reduction_compare_error_report_file error_report_file_name
Specifies the name of the file into which nCompare will output any mismatch error
messages. You can use the nce2report SpringSoft utility to generate a readable
text/html report as follows
nce2report -i error_report_file_name ...
Default: output_rule_file_name.nce
Alias: -error_report_file
-reduction_compare_log file_name
Specifies the name of the log file for this command.
Default: ReductionCompareFile.log
Alias: -log
WriteTechnologyFile
This command creates a PACE technology model file. You can use this file to
improve gate-level power accuracy. For complete details on how to create this file,
see Generating PACE Technology Files (Beta) in the PowerArtist Library
Developer’s Guide. For information on using this file in an analysis, see Using
PACE Technology Files During Power Analysis (Beta) in the PowerArtist User Guide.
Syntax
Arguments
-top top_module_name
Specifies the top-level module name.
-power_tech_file file_name
Specifies the output file name containing technology information. You can specify
either a relative or absolute path name. You can also use an environment variable
in the path name.
-scenario_file file_name
Specifies a scenario file.
Default: (none)
Alias: -scn
-sdc_files {file_name1 file_name2 ...}
Specifies a list of SDC files.
-spef_file file_name
Specifies a list of signal SPEF file(s).
-verilog_startup_file file_name
Specifies a single file containing a list of HDL files. This file is same as that used
by the -f option supplied to any Verilog simulator.
-default_transition_time float
Sets the default transition time to float seconds for any net for which slew is not
specified.
Alias: -dt
-synlib_files {file_name1 file_name2 ...}
Specifies a list of liberty library files. You can also use the ReadLibrary command
to specify which Liberty libraries to read.
-multiple_license_files true | false
Allows PowerArtist licenses to be served by multiple licenses.
Default: false
-wait_for_license true | false
Specifies that PowerArtist wait for a license to become available and to not exit.
Default: false
Alias: -wait
active_edge
Specifies the edge of the clock that defines the start point for the first interval. This is
used for time-based power analysis.
Syntax
activity_debug_flags
Prints debug information during any activity analysis.
Syntax
activity_file
Reads or writes the specified file as an intermediate activity file (it can be an IAF, a
VCD, or an FSDB file).
Syntax
activity_perform_esl_analysis
Performs Electronic System-Level (ESL) power analysis.
Syntax
activity_waveform_clock_edge
Specifies the clock edge on which the analysis will begin. You can start the analysis
on the first rising edge (pos), falling edge (neg) or first edge (auto) of the reference
clock.
Syntax
activity_waveform_clock_name
Specifies the full path name of the reference clock. The name is based on the -top
option used to generate your scenario file and is not based on the -topinst used to
control the starting point in your testbench.
Syntax
activity_waveform_cycles_per_interval
Specifies the number of clock cycles that would turn into one (x,y) data point in your
activity graph.
Syntax
activity_waveform_graph_type
Specifies activity_per_cycle for clock cycle mode or frequency_per_cycle for
time-based mode.
Syntax
activity_waveform_group_list
Specifies a Tcl list of group names defined in a DefineGroup command. These
represent the instances you want to monitor.
Syntax
activity_waveform_interval_size
Specifies the length of your interval in time steps. The time is given as an integer
followed by one of the following standard time scale indicators: s = seconds, ms =
milliseconds, us = microseconds, ps = picoseconds, fs = femptoseconds, or as =
atoseconds.
Syntax
activity_waveform_log
Specifies the log file name for activity file generation.
Syntax
activity_waveform_number_of_intervals
Defines the number of intervals to be analyzed.
Syntax
activity_waveform_start_clock_cycle
Specifies the clock cycle number that will form the starting point for the analysis. The
combination of activity_waveform_cycles_per_interval and
activity_waveform_number_of_intervals defines the finishing clock cycle.
Syntax
activity_waveform_start_time
Specifies the simulation time step that will form the starting point for the analysis. The
combination of activity_waveform_interval_size and
activity_waveform_number_of_intervals defines the finishing time step. The time is
given as an integer with the same standard time scale indicators described for pt_set
activity_waveform_interval_size.
Syntax
allowed_x_time
Specifies an amount of time a net can be in an X state continuously (not discrete). If
any signal is in X state (continuously) for more than the time specified with
-allowed_x_time then it is reported as WARNING 3344. For example:
#0
0$
#10
x$
#20
0$
#30
x$
#40
0$
#50
x$
#60
0$
#70
x$
If string ends with the letter “s”, it is specified as time, otherwise it is specified in
simulator ticks.
Syntax
allowed_z_time
Specifies an amount of time a net can be in an Z state. If string ends with the letter
“s”, it is specified as time, otherwise it is specified in simulator ticks. The nets that
exceed the allowed time in the Z state are reported in a text file (see -ftn_report).
Syntax
analysis_type
Performs average power analysis or time-based power analysis.
Syntax
arc_based_estimation
Enables arc-based power estimation for gate-level instances.
Syntax
average_cpf_in_file (Beta)
Specifies an input file containing power constraints in CPF. Though the software
supports a subset of the total CPF 1.1 command set, it will read CPF files that use all
of the available commands. Commands not supported are ignored. Similarly, the
software ignores any command options that are specified but not supported. For
more information, see Using a CPF Input Flow (Beta).
Syntax
average_cpf_output_file (Beta)
Writes out CPF constraints that capture Multi Supply Voltage (MSV) and Power Shut-
Off (PSO) design intent. You can then use these constraints in other tools such as
Cadence’s RTL Compiler™. The resulting file is in ASCII format, therefore, you can
add to or modify the generated CPF commands. The commands are not expected to
capture of all the information required to synthesize the design and capture all of the
information required to synthesize or place and route your design. For details, see
Using a CPF Output Flow (Beta) in the PowerArtist User Guide.
Syntax
average_html_report_title
Generates an HTML report file with the specified name. By default, no HTML file is
produced.
Syntax
average_report_file
Writes a report file for an average power analysis with the specified file name.
Syntax
average_report_options
Specifies one or more options that determine the contents of the report file.
Syntax
average_results_file
Writes average power results, in the netlist file format, to the given file. Note that if
you are reaching average power analysis capacity limits, do not specify this option.
Syntax
average_upf_in_file (Beta)
Specifies a UPF file as input for an average power analysis.
Syntax
average_write_power_db
Writes out a power database (.pdb) for an average power analysis. When this option
is specified, the estimators will output the OpenAccess database representation of all
the power analysis results.
Syntax
black_box_modules
Specifies modules to be black-boxed. When specified, the Elaborate command will
not infer logic for each module/unit in the Tcl list and its corresponding hierarchical
children. The is also used by the RewriteRTL command.
You can use wild cards. For example, “-black_box_modules dw*” will mark all
modules starting with “dw” to be black boxed. The wild card matching follows the
same convention as UNIX shell wild card file name matching, specifically:
* : matches zero or any number of characters
? : matches any single character
[abc] : matches any single character within the braces, one of “abc” in this case.
Characters are matched using the case-sensitivity of the HDL language used.
Names are matched sensitive to case in Verilog, or insensitive to case in VHDL or
mixed-language designs.
Syntax
blast_regfile
Specifies a Tcl list of comma-separated list of 2-D arrays to bit-blast or all (all arrays
will be bit-blasted). For more information on using this option, see Controlling Array
Inferencing in the PowerArtist User Guide.
Syntax
calculate_log
Specifies the name of the output log file for this command.
Syntax
capacitance_file
Reads the specified file as a back-annotated inter-module wire capacitance file.
See Capacitance File Format for more information.
Syntax
case_insensitive
Directs the Elaborate command to construct a scenario database using case-
insensitive name matching. 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 combination of VHDL and Verilog.
Syntax
case_sensitive
Directs the Elaborate command to construct a scenario database using case-
sensitive name matching. 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 combination of VHDL and Verilog.
Syntax
check_synlib_semantics
Performs semantic checks on specified .lib files.
Syntax
compare_with_results_file
Reads the specified result file and prints a report section showing the difference in
power between the result file and the current analysis.
Syntax
compress_gaf
Writes out a compressed .gaf file.
Syntax
constraints_bus_naming_style
Specifies how multi-bit register instances are named.
Syntax
constraints_log
Specifies the file name of the resulting log file from the WriteClockGatingConstraints
command.
Syntax
constraints_output_file
Specifies the file name of the resulting constraints output.
Syntax
constraints_savings
Specifies the target power savings that should be reached by the constraints. This is
a real number in Watts. You can use the CreateGraph command to determine the
value to use for this option.
Syntax
pt_set constraints_savings
Applies to: WriteClockGatingConstraints
constraints_synthesis_tool
Specifies the target synthesizer name. Currently, PowerArtist supports only PC (for
PowerCompiler™ from Synopsys™.
Syntax
pt_set constraints_synthesis_tool PC
Default: PC
Applies to: WriteClockGatingConstraints
count_glitches_as_toggles
In average power analysis mode, counts zero-duration glitches as toggles.
Syntax
critical_messages
Specifies a list of message IDs to be flagged as critical. If PowerArtist encounters
these message numbers, they are highlighted as critical in the final message
summary. Note that when you specify a message ID list, it will overwrite the current
list of critical messages. If you want to maintain the default list and simply add to it,
you must include the message IDs that are considered critical by default.
Syntax
current_output_file
Writes out the average current per instance to a file named current_output.tcl (by
default).
Syntax
debug_instances_file
Selectively enables debug messages for instances specified in the given file. The
format of the debug file is as follows:
-xdebug_switches
full_hierarchical_instance_name1
full_hierarchical_instance_name2
...
Syntax
default_dont_use_cells
Excludes the cells in the given file consideration during the default cell selection
process. The format of the file is as follows:
cellName libraryName
Sample File
DFFRX1 typical_13
TLATX1 typical_13
Syntax
default_output_load
Sets the default output load to the specified value. This load capacitance is applied
to all primary outputs not listed in the load or wiring capacitance files.
Syntax
default_transition_time
Sets the default transition time to float seconds for any net for which slew is not
specified.
Syntax
detailed_vertical_report
Generates a detailed vertical power report.
Syntax
disable_glitch_propagation
Disables delta (glitch) propagation.
Syntax
domain_frequency_cell_selection
When set to true, this variable activates frequency-based cell assignment. There is
no default value for the domain_frequency_cell_selection variable. When combined
with the -frequency option to the SetClockNet command, this variable determines
when frequency-based cell selection occurs. Frequency-based cell selection occurs
in either of the following two situations:
Syntax
elaborate_ignore_directives
Ignores directives to other tools. You may have a directive in your flow to ignore
parsing your source. This is often done with a translate_off pragma. For example:
In this case, you would use the following option specification to turn off the
translate_on/translate_off directives:
pt_set elaborate_ignore_directives quickturn
Syntax
elaborate_log
Specifies the log for the Elaborate command.
Syntax
elaborate_write_power_db
Writes out a Power Database (.pdb file) for use in PowerArtist. The .pdb is an
OpenAccess database representation the power analysis results.
Syntax
enhanced_vcd
Reads the IAF file as an Enhanced VCD format file. See Acquiring Simulation
Data in the PowerArtist User Guide for more information about IAF and Enhanced
VCD.
Syntax
etcl_file
Specifies the name of final ETCL file to be generated by the GenerateEtclFile
command.
Syntax
etcl_finish_time
Specifies the end time for the activity window you want covered by the etcl file.
Standard engineering notation applies (for example, 10ns). The start and end time
are written to a temporary Tcl file that contains the following command which is the
file name supplied to the -tcl option.
studio_state_setup_time_based start_time end_time etcl_file_name
Syntax
etcl_log
Specifies the name of the output log file for the GenerateEtclFile command.
Syntax
pt_set etcl_log
Default: GenerateEtclFile.log
Applies to: GenerateEtclFile
etcl_start_time
Specifies the start time for the activity window you want covered by the etcl file.
Standard engineering notation applies (for example, 10ns).
Syntax
finish_time
Stops collecting data at the specified string. If string ends with the letter “s”, it is
specified as time, otherwise it is specified in simulator ticks.
Syntax
flop_clock_activity
Monitors the activity of clock pins in registers in your design. The
file_name_prefix specifies the prefix you want to use for flop clock activity output
files (for example, “fca”).
Syntax
force_stimulus_processing
VCD file processing typically takes a significant amount of time for any meaningful
size design. If you want to do some what-if experiments without re-reading your
stimulus file, you have to set this argument to “false”. When set to true (the default)
your stimulus file gets re-read during a simulation-based, average power analysis.
Syntax
forced_x
Replaces X with a binary value of 1 or 0 wherever they occur while reading a VCD or
FSDB simulation trace file.
Syntax
pt_set forced_x 0 | 1
Applies to: CalculatePower and ReducePower
fsdb_output_file
Specifies the name of the FSDB file. The FSDB file is a graphical file showing power
over time. You can view the resulting .ptcl file using the Apache Waveform Viewer (or
the Verdi™ product from SpringSoft).
Syntax
ftn_report_file
Specifies a name for the report containing names of the Floating Tri-state Nets
(FTN).
Syntax
gaf_file
Reads or writes the specified global activity file (GAF).
Syntax
gate_level_netlist
Directs PowerArtist to regard the design as a gate-level netlist. This has the following
effects on the tool flow:
During compilation, Elaborate will ensure that the design is a gate-level netlist. If
RTL operators are encountered (other than direct assignments of one signal to
another), then a warning is printed and the operators are removed from the
design.
During either average or time_based power analysis, PowerArtist will skip default
cell selection for RTL operators. If all simulation activity has been directly recorded
and, vectorless, pin-based, or mixed probabilistic analysis is not required, then
power analysis skips activity propagation for additional run time efficiency.
Syntax
graph_class
Specifies the type of reduction data that should be examined for plotting. Currently,
this variable only supports the “clock” value. This will generate graph data related to
clock gating opportunities. You must specify this variable when running the
CreateGraph command.
Syntax
graph_log
Specifies the log file name containing any messages generated by the CreateGraph
command.
Syntax
graph_output_file
Specifies the PTCL file name containing graph data for the CreateGraph command.
If you don’t specify this option, the PTCL is output to the log file, which by default is
named CreateGraph.log.
Syntax
graph_type
Specifies the form of the graph to be generated by the CreateGraph command.
Currently, the graph type supports only “power_savings”. This generates a
cumulative power savings curve as a function of the number of RTL reduction
opportunities.
Syntax
heartbeat
Prints progress information during GAF file creation. The specified string (in
simulation time units) is taken as the time between emitting progress messages. If
string ends with the letter “s”, it is specified as a fraction of simulation seconds;
otherwise it is considered to be simulation ticks.
For example, if the time scale for your simulation results is 10 ns. Specifying “pt_set
heartbeat 1” will print a progress message every 10 ns of simulation time. If you
specify “pt_set heartbeat 20ns”, you will get a heartbeat message approximately
every 20 ns of simulation time.
The generated message is similar to the following:
Note 2086: Simulation time is now xxx (yyy simulator ticks).
The simulation time in the messages is approximate to the heartbeat because you
must have simulation signal change results in your IAF file that occur approximately
every heartbeat.
Syntax
html_report_directory
This option writes HTML files into the specified directory. The top-level file is named
index.html. This option must be used with the average_html_report_title variable.
Syntax
ignore_SPEF_C_comments
Ignores “C-style” comments in the SPEF file.
Syntax
ignore_toggles_through_x
Ignores transitions to the X state during toggle calculations.
Syntax
ignore_translate_off
Ignores translate_off and translate_on meta comments in all files.
Syntax
ignore_translate_off_files
Specifies a Tcl list of files for which to ignore translate_off and translate_on meta
comments.
Syntax
instance_power_threshold
Eliminates instances with less than float percentage of the total power from the
power report.
Syntax
interpret_pin_caps_as
Instructs PowerArtist to use the rise_capacitance_range and fall_capacitance_range
attributes to calculate pin capacitances. The actual pin capacitance values are
calculated in the following manner:
min: pin capacitance = (Min_rise + Min_fall) / 2
max: pin capacitance = (Max_rise + Max_fall) / 2
avg: pin capacitance = (Min_rise + Max_rise + Min_fall + Max_fall) / 4
For more information on how pin capacitance is calculated, see Transition Counting
on Nets.
Syntax
interval_size
Specifies the number of intervals into which the simulation will be broken. For more
information on the usage of this option and an example, see the description of the
pt_set statistics variable.
Syntax
library_defaults_file
Specifies a Sequence Library Defaults (SLD) file.)
Syntax
list_required_traces
Generates a file containing a list of nets that must be monitored (recorded) to ensure
an accurate power analysis. The resulting file will contain one net name per line. This
file is used in a Palladium flow. For more information, see Acquiring Simulation Data
in Palladium Flows.
Syntax
load_file
Reads the specified back-annotated load capacitance file. See Capacitance File
Format for more information.
Syntax
lower_case_vhdl
Generates lower-case names for VHDL.
Syntax
macro_directories
Specifies a Tcl list of directories that contain power macro models. The Elaborate
command searches these directories in the order listed, and the default directory is
searched last.
You can use the power-aware models in these directories to replace HDL models
without modifying your design source. See the Getting Your Design into
PowerArtist chapter in your user guide for more information about power macros.
Syntax
max_clock_depth
Limits the forward clock-tracing depth to the number specified. Prevents excessive
time spent in forward tracing. Very rarely would you encounter a clock depth greater
than the default. You should only need to use this variable when you get a 1441
warning.
Syntax
max_time_stamps
Specifies the maximum number of time stamps printed in the report for each instance
or class of instances defined in the monitor file. The time stamps correspond to the
times when the power was the highest for those instances.
Syntax
maximum_number_of_errors
Specifies the maximum number of errors to be printed in any given message.
Syntax
min_regfile_bit_count
Specifies a minimum bit count (words x length) of 2-D arrays to be preserved as
register files or latch files. For more information on using this option, see Controlling
Array Inferencing in the PowerArtist User Guide.
Syntax
min_regfile_word_count
Specifies a minimum word count 2-D arrays to be preserved as register files or latch
files. For more information on using this option, see Controlling Array Inferencing in
the PowerArtist User Guide.
Syntax
min_regfile_word_length
Specifies a minimum word length of 2-D arrays to be preserved as register files or
latch files. For more information on using this option, see Controlling Array
Inferencing in the PowerArtist User Guide.
Syntax
mixed_sim_prob_estimation
Enables activity propagation when the simulation dump is partial and does not
capture all nets, or when the design description does not exactly match the
simulation data.
Syntax
mode_file
Reads the specified mode control file. For modal analysis, you must run
CalculatePower with this option. For more information on the mode file, see Mode
File Format. Note that this variable cannot be used with the gate_level_netlist
variable (or -gate_level_netlist option to CalculatePower).
Syntax
multiple_license_files
Allows PowerArtist licenses to be served by FlexLMTM license servers.
Syntax
multiple_testbench_control_file
Calculates an averaged power number based on multiple GAF files that were
generated using different testbenches. These GAF files are specified via a control file
you specify as an argument to this variable. Each GAF must be written for the same
design (top level), but cover different portions of the design, or supply different vector
sets. The testbenches do not need to be of equal length or mutually exclusive, but
they are required to have the same top instance.
Syntax
no_default_macros
Instructs Elaborate to not search for macros in the directory specified with the
macro_directories variable only—not the default macros in the default
$POWERTHEATER_ROOT/pthdl_src/macros directory.
Syntax
no_maximum_error_list
Removes any limit on the number of messages that can be printed. You should use
this option sparingly.
Syntax
no_module_net_capacitances
When set to true, disables analysis of inter/intra-module net capacitances.
Syntax
no_slew_calculation
An internal slew calculator is enabled by default in all power engines of PowerArtist.
This variable disables this slew calculator.
Syntax
num_clock_cycles
Sets the interval size as a number of clock cycles for RTL time-based analysis. The
interval size is the period of the block into which PowerArtist will split the simulation.
It is recommended that you choose an interval greater than 1% of the total simulation
time.
Syntax
output_ascii_netlist
Writes the netlist data to the specified ASCII file.
Syntax
output_current
Writes out current information to the waveform files instead of power numbers. You
might want to use this feature, for example, if you were looking for di/dt changes for
voltage drop analysis.
Syntax
output_rtl_dir_name
Specifies the directory containing the rewritten RTL directory structure.
Syntax
pt_set output_rtl_dir_name
Default: ./rewrite
Applies to: RewriteRTL
output_startup_file
Creates a Verilog startup file with the given name.
Syntax
parameter_maps
Assigns values to different parameters for a top-level VHDL or Verilog module. For
example, suppose you have 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 could override the size parameter by adding the pt_set parameter_maps
variable in your command file:
When PowerArtist elaborates the Verilog design, size would be set to 4. If you have
multiple parameters you want to override, you could use multiple instances of the
pt_set parameter_maps variable or include multiple values with a Tcl list of
name=value pairs. For example:
pt_set parameter_maps p1=4
pt_set parameter_maps p2=5
accomplishes the same operation as:
pt_set parameter_maps p1=4 p2=5
You can also use the pt_set parameter_maps variable to set generics. Take, for
example, 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);
CC : OUT STD_LOGIC_VECTOR(SIZE-1 downto 0));
END TOP;
ARCHITECTURE A0 OF TOP IS
BEGIN
CC <= BB AND TT;
END A0;
Given this fragment, you could add the following lines to your command file to set the
SIZE parameter:
Syntax
pc_constraint_file
Specifies the name of the file into which PowerArtist will write out
set_clock_gating_signals commands. You can then use this file in a synthesizer. For
information, see Rewriting Your RTL in the PowerArtist User Guide.
Syntax
peak_cycle_file
Generates an output file that contains the commands required to generate the Etcl
(.etcl) file. An Etcl file saves the primary inputs and register state information for a
given point in time. It can be used by CoolTime when calculating dynamic voltage
drop analysis. If the “pt_set peak_cycle_processing_mode” variable is set to “auto”,
then this file will contain the studio_state_setup_time_based command, and is
passed on to the GenerateEtclFile command for generating an etcl file; otherwise,
the file will contain peak power information for each clock cycle.
Syntax
peak_cycle_processing_mode
Selects the processing mode for generating an etcl file.
auto: the time-based engine will automatically determine the clock cycle with the
highest power and will run CalculatePower with the correct options to generate the
required etcl file. If multiple cycles have the same power, then the first one that
occurs in time will be selected.
interactive: the GUI will generate a peak cycle file. When power analysis
completes, you will be taken to another GUI page that allows you to interactively
scan the power on each clock cycle and choose the cycle of interest. Once you
complete this step, PowerArtist generates the required etcl file.
Syntax
peak_waveform_file
Generates an output file that contains peak power information for all clock cycles.
Syntax
power_db_name
Reads in the specified power database file. If you want to use a PDB file, you must
specify the name of that file with this option.
Syntax
power_tech_file (Beta)
Specifies a PACE technology file for capacitance estimation. Capacitance estimation
using PACE overrides capacitance estimation using wire load models, whereas other
capacitance annotation methods override capacitance estimation using PACE. For
more information, see Using PACE Technology Files During Power Analysis (Beta) in
the PowerArtist User Guide and Chapter 9, Generating PACE Technology Files
(Beta) in the PowerArtist Library Developer’s Guide.
Syntax
power_tech_file file_name
Applies to: CalculatePower, ReducePower and WriteTechnologyFile
preserve_regfile
Specifies either a Tcl list of 2-D arrays to preserved or all (all arrays will be
preserved). For more information on using this option, see Controlling Array
Inferencing in the PowerArtist User Guide.
Syntax
print_missing_sim_nets
Prints the names of nets that are in your scenario file but are not in your simulation
file.
Syntax
ptcl_output_file
Specifies the name of the PTCL file generated by the GenerateActivityWaveforms
command. You need to specify this variable (or the equivalent command option to the
GenerateActivityWaveforms command) to name the PTCL file. The PTCL file is a
graphical file showing power over time that you can view using the Apache
Waveform Viewer.
Syntax
quiet
Suppresses the printing of Note-level messages.
Syntax
reduction_classes
Specifies the type (or “class”) of reduction to run. By default, all classes are run. The
available classes are:
linter, which includes: Memory Power Linter, MUX Power Linter, Register Power
Linter, and Clock Enable Condition Linter
logic, which includes: Datapath Operator Isolation
memory, which includes: Split Memory Words, Gate Memory Clock
clock, which includes: Prism, Local Explicit Clock Enable, Low-Activity Non-
Enabled Register, and Observability Don't Care
all, which includes all PowerBots.
If you want to exclude a class, for example, clock, you can specify this option and
simply exclude that class name from the specified list. To further fine-tune your
reduction, you can use this option in conjunction with the skip_reduction_list variable.
For example, you could do the following:
Given these settings, PowerArtist will only run the LNR and ODC PowerBots.
Syntax
reduction_compare_error_report_file
Specifies the name of the file into which nCompare will output any mismatch error
messages. You can use the nce2report SpringSoft utility to generate a readable text/
html report as follows:
nce2report -i error_report_file_name ...
Syntax
reduction_compare_golden_sim_file
Specifies the path to the original FSDB file against which the new FSDB (with the
new RTL) file will be compared by the WriteReductionCompareFile command.
Syntax
reduction_compare_log
Specifies the name of the log file for the WriteReductionCompareFile command.
Syntax
reduction_compare_output_rule_file
Specifies the name of the output rule file to be generated by the
WriteReductionCompareFile command.
Syntax
reduction_compare_secondary_sim_file
Specifies the name of the rewritten FSDB file against which the golden FSDB file is
to be compared.
Syntax
reduction_compare_type
Specifies the types of power reductions to compare. You can select either “rw” to
compare all rewritten reductions or “auto” to compare all accepted reductions.
Syntax
reduction_cpf_in_file (Beta)
Specifies an input file for reduction that contains multiple voltage domains and power
gating design intent constraints in the Common Power Format (CPF). For details,
see Using a CPF Input Flow (Beta) in the PowerArtist User Guide.
Syntax
reduction_cpf_output_file (Beta)
Writes out CPF constraints that capture Multi Supply Voltage (MSV) and Power Shut-
Off (PSO) design intent. You can then use these constraints in other tools such as
Cadence’s RTL Compiler™. The resulting file is in ASCII format, therefore, you can
add to or modify the generated CPF commands. The commands are not expected to
capture of all the information required to synthesize the design and capture all of the
information required to synthesize or place and route your design. For details, see
Using a CPF Output Flow (Beta) in the PowerArtist User Guide.
Syntax
reduction_debug_flags
Specifies debug flags to be applied during a reduction run.
Syntax
reduction_dont_touch_clocks
Specifies a list of clock domains that you want to analyze but prevent from being
automatically rewritten. This option interacts with the SetClockNet -gate_clock true |
false option. For details on the effects of this option, see Controlling Clock Domains
During Reduction.
Syntax
reduction_dont_touch_modules
Specifies a list of modules to exclude from reduction analysis. You cannot use wild
cards in for the module names. The names are the base module type names before
parametrization creates unique names. For example, suppose you have a
parameterized module named block. You then instantiate block in the following
manner:
block #(4) blk1(....);
The inferred module type name becomes block(SIZE=4). To prevent block from
being considered for reduction and rewrite, you would specify the following
command:
pt_set reduction_dont_touch_modules block
This also affects the rewrite process.
Syntax
pt_set reduction_dont_touch_modules
Applies to: ReducePower
reduction_hierarchy
Controls whether reduction opportunities are allowed to cross hierarchical
boundaries. If you set this to “full” the reduction engine will attempt to find as many
opportunities as possible that don’t cross hierarchical boundaries (for example,
Prism will break register chains at module boundaries and attempt to start a new
chain with a generated enable). If optimization across a boundary is not possible, the
opportunity is still saved for you to see in the GUI but it is not auto-accepted. The
default value for this option is “none” because RTL rewrite does not currently make
RTL changes that cross hierarchical boundaries.
Syntax
reduction_html_report_title
Generates an HTML report file with the specified name. By default, no HTML file is
produced.
Syntax
reduction_log
Specifies the name of the log file for reduction analysis.
Syntax
reduction_max_bit_width
Specifies the maximum bit width of a register from which an enable will be
generated. Currently the only enable generation method that uses this parameter is
LNR to prevent XOR/OR trees from becoming too large.
Syntax
reduction_max_memory_split
Specifies the maximum number of memory splits allowed by the SMW PowerBot. By
default, ReducePower will attempt to split a memory into two smaller-size memories.
You can change this value to a higher number to allow the SMW PowerBot to
attempt to further split the original memories.
Syntax
reduction_max_memory_split int
Default: 2
Applies to: ReducePower
reduction_min_bit_width
Specifies the minimum bit width for ungated registers. Ungated registers must be
greater than or equal to the minimum bit width value to be considered as a candidate
register. Specifies the minimum bit width for generating XOR enables as part of the
Prism PowerBot.
Syntax
pt_set reduction_min_bit_width
Default: 3
Applies to: ReducePower
reduction_overwrite_power_db
If set to true, overwrites the existing power database (.pdb) file. If not set, PowerArtist
incrementally updates the reduction data for all the reductions that are enabled
without updating the average power numbers calculated from the previous run.
Default: false
Applies to: ReducePower
Syntax
reduction_priority
Controls the way clock gating is performed in a reduction run. If you select “skew”,
PowerArtist will either include all bits of a register bank for clock gating or none. This
could reduce your power savings, but also minimizes clock skew between bits of the
same register bank. If you are concerned about minimizing clock skew, select this
option. If you select “power” PowerArtist clock gates only those bits that save
power—without regard to the impact on clock skew. This option works with the LNR
and ODC PowerBots. Note that the LEC PowerBot is always set to “skew”. The value
of this option is displayed in the header of the .red file.
Syntax
reduction_report_csv_file
Specifies the name of the output CSV file generated by the ReportReductions
command.
Syntax
reduction_report_csv_separator
Specifies the separator to be used in the CSV report file.
Syntax
pt_set reduction_report_csv_separator
Default: ,
Applies to: ReportReductions
reduction_report_file
Writes a report file for power reduction analysis with the specified file name.
Syntax
reduction_report_instance
Specifies the names of instances for which you want to report power analysis results.
You can use glob-style wild card characters. If not specified, all instance reductions
will be reported.
Syntax
reduction_report_log_file
Specifies the name of the log file generated by the ReportReductions command.
Syntax
reduction_report_module
Specifies the name of module for which you want to report power analysis results.
You can use glob-style wild card characters. If not specified, all instance reductions
will be reported.
Syntax
pt_set reduction_report_module
Default: *
Applies to: ReportReductions
reduction_report_options
Specifies a list of reporting options.
Syntax
reduction_report_type
Reports reduction information in terms of the power savings you can achieve
(power_savings) or how difficult it will be to achieve the savings
(reduction_vs_effort).
Syntax
reduction_results_file
Writes power reduction data to the specified results file. This file is needed to use
compare_with_results_file variable.
Syntax
reduction_threshold
Limits the display to only those reductions that would save more than the specified
percentage of total power.
Syntax
reduction_topology
Controls whether PowerArtist considers power when determining if a reduction
opportunity should be automatically accepted. When set to true, the algorithms for
the Prism and ODC PowerBots will not take power into consideration when
determining whether or not to accept a reduction opportunity.
Syntax
reduction_upf_in_file (Beta)
Specifies a UPF file as input for power reduction analysis.
Syntax
reference_clock
Specifies the reference clock that controls when a clock starts and the length of its
period.
Syntax
pt_set reference_clock
Applies to: CalculatePower -analysis_type time_based
reset_library_negative_power
On an arc-by-arc basis, after the power computation for an arc is done, if its power is
less than 0, this option sets it to 0.
Syntax
reset_negative_power
Sets the power value to 0 for all instances with a negative power value.
Syntax
rewrite_debug_flags
Prints debug information for the rewrite process.
Syntax
F—prints (to your screen) information about the current processing steps
performed by rewrite.
g—prints (to your screen) information related to failed rewrites. This will also
generate files that begin with rw_. Example files include: rw_details.txt,
rw_failed.txt, and rw_stats.txt.
Applies to: RewriteRTL
rewrite_log
Writes an output log file with the given name.
Syntax
rewrite_no_inline_modules
When set true, RewriteRTL generates the pa_modules.v file for PowerBots LNR,
FCE and ODC. Depending on your design, at most, the following modules will be
created:
ADS_PA_COMPARE_WITH_ZERO
ADS_PA_NEGEDGED_ADELAY
ADS_PA_NEGEDGED_DELAY
ADS_PA_NEGEDGED_SDELAY
ADS_PA_POSEDGED_ADELAY
ADS_PA_POSEDGED_DELAY
ADS_PA_POSEDGED_SDELAY
The in-lining of the functionality is switched off. When set to false (the default) you
will have module instantiations of the above in your RTL. For example,
Syntax
rewrite_reduction_mapping_file
Generates a mapping file that specifies the parameters that can be used to control
each of the reduction opportunities in RTL.
Syntax
rewrite_report_file
Creates a report file containing a list of original and new RTL files.
Syntax
saif_file
Specifies a SAIF file to use for power analysis instead of a VCD or FSDB. For details
on this flow, see Analyzing Average Power Using a SAIF File.
Syntax
save_clock_trees_netlist
Generates power database schematics for the clock trees in the design.
Default: false
Applies to: CalculatePower and ReducePower
save_x_nets_file
Creates a file listing any nets that are in an X state during the simulation. This
creates a file with three columns.
Sample Output
count.n29 1 0.000000011000
count.n46 2 0.000000034000
The first column is the signal name. The second column is the number of times the
signal transitions to an X state. The third column is the cumulative time spent by the
signal in the X state. You can use the -allowed_x_time option to set the tolerance of
X detection, that is, the allowable time span beyond which signals stuck at X get
reported. You can sort this file by any of the three columns using the UNIX “sort”
utility, for example:
% sort -r -n -k 2 x_net_file_name
% sort -r -n -k 3 x_net_file_name
-r reverses the order of the result so the largest values are at the top.
-n performs a numerical sort.
-k col_num indicates the column number by which to sort.
Syntax
scenario_file
Specifies a scenario file. If you’re in composite mode, this specifies the root from
which PowerArtist will search for other scenarios.
Syntax
sdc_files
Specifies a Tcl list of SDC files that you want to parse.
Syntax
sdc_log
Specifies the name of the log file that will collect all error, warning and note
messages generated by this command.
Syntax
sdc_out_file
Specifies the name of the output ptshell script. You can specify this file in subsequent
PowerArtist sessions.
Syntax
set_load_file
Reads a Tcl list of file names as supplied load on internal nets or pins in the design.
Syntax
show_reduction_net_name
Shows net names for register reductions.
Syntax
skip_clock_analysis
Allows you to run PowerArtist to without a SetClockNet command. When set to true,
the clock file is ignored. The default for this options is false. The following conditions
will print warning/error messages:
If you do not set this option to true and you do not specify a SetClockNet
command, you will get the following error message:
Error: Neither a SetClockNet command nor a skip_clock_analysis
option is specified. One of them is required.
If you set this option but you did not specify at least one SetClockNet command,
you will get the following warning message:
Warning: No SetClockNet command is specified. A skip_clock_analysis option is
specified. Therefore, clock tracing and inferencing analysis will be disabled.
Unless the design has clock trees instantiated, inaccurate results may occur.
If you specify both a skip_clock_analysis option and a SetClockNet command, you
will get the following warning message:
Warning: A SetClockNet command and the skip_clock_analysis option have been
specified. Therefore, ignoring the skip_clock_analysis option. Clock tracing and/or
inferencing will be performed.
Syntax
skip_reduction_list
Specifies a Tcl list of reduction types (PowerBots) you want to skip.
Syntax
spef_file
Specifies a SPEF file. This file is used to back-annotate the pin and internal net
capacitance values. For details see, Back-Annotating Capacitance Using SPEF.
Syntax
start_time
Starts collecting data at the specified string. If string ends with the letter “s”, it is
specified as time, otherwise it is specified in simulator ticks.
Syntax
statics_threshold
Specifies that PowerArtist monitor only static vectors with power greater than the
specified percentage. For RTL designs with huge numbers of instantiated gates,
using this option will improve both the run time and memory usage. Values of 5 to 20
percent are usual, 0 to 50 percent is allowed. You should rarely have to use this
option in PowerArtist
Default: 0
Syntax
pt_set statics_threshold
Applies to: CalculatePower
statistics
Specifies that PowerArtist capture register activity statistics for use in the CoolTime
product. CoolTime requires register activity information for a vectorless
instantaneous voltage drop analysis. Given the “pt_set statistics register_activity”
variable, CalculatePower reports the “peak” register activity over your chosen
simulation duration. This means that you also have to supply an interval size that is
used to break your simulation up into N intervals. This peak activity is output in your
CalculatePower.log file.
Example:
pt_set statistics register_activity
CalculatePower -start_time 10ns -finish_time 1ms
-interval_size 20e-09
This would generate a new Note 2130 in the log file. The note would appear as
follows:
You can then supply the Peak Register Activity (.7 in this example) to CoolTime. The
Note also records the start and end time of the peak interval.
Syntax
stimulus_processing_passes
Runs GAF creation serially in integer passes to trade off the memory footprint for
run time. The higher the integer value provided, the longer the run time and smaller
the memory footprint.
Syntax
suppress_messages
Specifies a Tcl list of warning numbers to be suppressed. This will override the
default warning message list.
Syntax
synlib_files
Adds the specified file or Tcl list of files to the list of .lib technology files. The asterisk
wild card is allowed, and is expanded by the shell.
Syntax
system_verilog
Treats all files in the Verilog startup file (specified with the verilog_startup_file
variable) to be System Verilog files. System Verilog inferencing requires the System
Verilog option to PowerArtist.
Syntax
tag_blocks
Tags registers with the surrounding block name. These tags will be used later in the
MapRetentionCell command to control retention cell default cell selection.
Syntax
time_based_cpf_in_file (Beta)
Specifies an input file containing power constraints in CPF. Though the software
supports a subset of the total CPF 1.1 command set, it will read CPF files that use all
of the available commands. Commands not supported are ignored. Similarly, the
software ignores any command options that are specified but not supported. For
more information, see Using a CPF Input Flow (Beta).
Syntax
time_based_cpf_output_file (Beta)
Writes out CPF constraints that capture Multi Supply Voltage (MSV) and Power Shut-
Off (PSO) design intent.
Syntax
time_based_report_file
Writes a report file for time based power analysis with the specified file name.
Syntax
time_based_report_options
Specifies reporting options for time-based power analysis. You can specify the
following options:
M—Outputs retention flops of the library cell to which the inferred instance mapped.
V—Reports power dissipation per power supply.
Syntax
time_based_upf_in_file (Beta)
Specifies an input file in UPF 1.0. For details how to use this option, see Using a
UPF Input Flow (Beta).
Syntax
time_based_write_power_db
Writes out a Power Database (.pdb) for use in the PowerArtist GUI. When this option
is specified, the time-based power analyzer will output the OpenAccess database
representation of all the power analysis results.
Syntax
top
Specifies the top-level module name.
Syntax
top_instance
Specifies the full hierarchical name of the top-level module in the simulation
hierarchy. This should correspond to the module specified with Elaborate -top. For
example, if your testbench is called “bench” and it instantiates the top module as
“dut”, specify “pt_set top_instance bench.dut”. Note that this is not supported by the
Elaborate command.
Syntax
transition_time_file
Specifies the output transition time file. You can specify this file in subsequent
PowerArtist sessions.
Syntax
unlimit_interval_size
Allows you to specify an interval size smaller than 1ns for time-based power
analysis.
Syntax
use_library_file_names
Normally all Liberty cells are found using logical names. When set to true,
PowerArtist stores cell libraries by file name. This allows two Liberty files with same
logical library names in them to be read without any conflict. This tells Elaborate,
CalculatePower and ReducePower to find the cells by their physical file names which
will always be unique. Then any command in the system that has a -library option
will find cells using the physical file name.
Syntax
use_non_scan_flops
During power analysis, PowerArtist searches the library for non scan flip-flop
definitions for use as default cells.
Syntax
use_rtl_sim_data
Tells PowerArtist to run average power analysis with name mapping. This flow maps
as many of your RTL net names as possible into gate-level equivalent names. This is
described in the Name Mapping Flow in the PowerArtist User Guide.
Syntax
use_scan_flops
Uses only scan flip-flops for default flip-flop cell selection. By default, all types of
flip-flops are considered for default flip-flop selection, including scan flip-flops.
Syntax
vectorless_input_file
Reads the specified file as a Vectorless Activity File (VAF) and run s a vectorless
average power analysis.
Syntax
verilog_2001
Enables recognition of Verilog 2001.
Syntax
verilog_startup_file
Reads in the specified startup file. The Elaborate command recognizes and expands
UNIX environment variables that appear in this startup file. You can specify
environment variables either with brace delimiters as in “${VARNAME}” or without, as
in “$VARNAME”. If you do not use brace delimiters, the variable name is considered
to end with the last alpha-numeric or underscore (_) character. Environment
variables within comments are not expanded. If there is no definition for a variable
required in the startup file, an error is reported and the program will terminate with
error status.
Syntax
vertical_report_instances
Produces a vertical report that provides summary information for the specified list of
instances. Note that vertical reports do not include instances that are reported as
part of clock tree power.
Syntax
vertical_report_sort_mode
Sorts the vertical report when it is generated by the vertical_report_instances
variable.
Syntax
voltage
Sets the design voltage to the specified value.
Syntax
wait_for_license
Waits for a PowerArtist license to become available and doesn’t exit. For more
information, see Waiting for a Feature License.
Syntax
wireload_library
Specifies the library in which the power analyzer will search for wire load models.
This is useful when reading in multiple libraries that could contain wire load models.
Note: the lib_name argument is the name of the library in your .lib file—not the file
name of the library.
Syntax
work_library
Specifies the work library of the top design unit.
Syntax
zero_delay
Specifies that the activity file was generated by a simulator in zero-delay mode. See
the Zero Delay Simulation section in the PowerArtist User Guide for details.
Syntax
dcd
This utility sets the current design directory to the specified design directory.
Syntax
dcd design_directory
Returns
dcd /top
This sets your current design directory to be /top. /top is an absolute path.
dcd core1
If you have first specified the “dcd /top” command followed by this command, this
sets your current design directory to be /top/core1—core1 is a relative path.
dpush
dpop
The dpush and dpop utilities work analogously to the pushd and popd Unix
commands. dpush pushes the current working directory to a directory stack and then
sets the current working directory to be the design directory. dpop pops the directory
stack and makes the current design directory be the directory that was on the top of
the design stack.
Syntax
dpush design_directory
dpop design_directory
Returns
Example
dcd /top
dpush core1/j1
# the current working directory is /top/core1/j1
dpop
# the current working directory is /top
# the directory stack is empty
dirs
This utility lists the design directory stack.
Syntax
dirs
Returns
A Tcl set of design directory names with the stack top directory name as index 0.
Example
full_chip_ptshell % dpush r1
0
full_chip_ptshell % dirs
/top/core1 /top
full_chip_ptshell % dpwd
/top/core1/r1
This series of commands shows you how to use the dirs command.
dpwd
This utility lists the current working directory.
Syntax
dpwd
Returns
dls
This utility lists the contents of the design directory.
Syntax
dls [pattern] [-p | -pi | -po] [-n] [-i | -iH | -iL] [-l] [-help | -h]
Arguments
pattern
Specifies a pattern of element names to be matched. You can use standard glob-
style wild cards.
[-p | -pi | -po]
Shows different types of ports: -p (all), -pi (input ports only), or -po (output ports
only)
[-n]
Shows the nets in this design.
[-i | -iH | -iL]
Shows the specified type of instances: -i (all instances) -iH (hierarchical instances
only) or -iL (leaf instances only).
[-help | -h]
Prints a help message for this utility.
Returns
/top/core1/j1
(i) tck (i) tms (i) trst (i) tdi
(o) tdo (n) tck (n) tms (n) trst
(n) tdi (n) tdo (n) #2327 (n) 0
(n) ireg[63:0] (n) intermediate (L) #2329 (L) #2328
The first line is the current design directory name. The remaining lines are the
objects (nets, ports and instances) local to the current design directory. The ()
indicates the type of object:
i(nput port)
o(utput port)
n(et)
H(ierarchical instance)
L(eaf instance)
show
This utility shows pseudo-Verilog for the specified instance path or module. The
pseudo-Verilog is a structural netlist representation of all the elements in the
specified design object. This opens a vi session (or the editor set by environment
variable $EDITOR) in an xterm. If you do not specify an argument to this command,
then the current working directory will be displayed.
Syntax
show [inst_path_or_module_name]
Example
Using the analysis/full_chip tutorial, if you specify the following set of commands:
dcd /top/core1/r1/s1
show
vi will start up with the pseudo-Verilog displayed for the current working directory.
The screen will look like the following as the receive channel finite state machine,
rxfsm, is displayed.
<snip>
#unencoded_mux#,1,1,1,1,3 #415(
.select[2](#361), .select[1](#363), .select[0](#381),
.a_in[0](1), .b_in[0](#365), .c_in[0](frame),
.out[0](#380)
);
#unencoded_mux#,1,1,1,1,3 #414(
.select[2](#362), .select[1](#397), .select[0](#364),
.a_in[0](1), .b_in[0](frame), .c_in[0](#368),
.out[0](#376)
);
#register#,4,4,1,1 #413(
.clock[0](clk), .reset[0](nreset), .dout[3](ndevsel),
.dout[2](en_rxwrd), .dout[1](en_rxmsg), .dout[0](push),
.din[3](#390), .din[2](#391), .din[1](#392),
.din[0](#394)
);
<snip>
endmodule
getAssociatedNet
This utility returns the path name for the net associated with the specified pin path.
Syntax
getAssociatedNet pin_path
Arguments
pin_path
A pin path name for which the associated net’s path name will be returned.
Example
getConnectedPins
This utility returns a list of pins connected to the specified net.
Syntax
getConnectedPins net_path
Example
getSrcPin
This utility returns the path name of the driving source pin of the specified pin or net.
If multiple source pins are found, a warning is issued and the path name of the first
pin is returned. Only pins of leaf instances and primary input ports are listed.
Syntax
getSrcPin pin_or_net_path
Example
getSinkPins
This utility returns a list of path names of the sink pins driven by the specified pin (or
net). Only pins of leaf instances and primary output ports are listed.
Syntax
getSinkPins pin_or_net_path
Example
getSinkPins /top/core1/r1/s1/match
Run from the full-chip tutorial, this command returns the following:
{/top/core1/r1/s1/#417/b_in[0]} {/top/core1/r1/s1/#419/in[0]}
getFanout
This utility returns a list of path names of fanout endpoints from a specified pin.
Fanout endpoints are either flop input pins or primary output ports. These endpoints
are the terminating points of paths from the start pin.
Syntax
Arguments
-pin pin_path
Specifies the path name of the pin from which PowerArtist will return a list of
fanout endpoints.
-levels num
Specifies the number of logic levels to traverse. Inferred logic instances like
unencoded multiplexors may be very complex. They however only account for one
logic level even though when synthesized they may account for many more levels
of synthesized logic.
Default: 1; specifying -1 will traverse as many levels of logic as needed to reach
an endpoint.
-gothru instance_gothru_command
Specifies a command (default is isCombinational) that would be applied to the
logic instance in the path. Traversal will continue if this command is satisfied, and
stop otherwise. For example, if you want the traversal to go through all LATCH
instances, use “-gothru isLatch”.
-command endpoint_satisfaction_command
Specifies a command to be applied on the incident pin for endpoint satisfaction.
For example, if you want to trace fanout to the select pins of all MUX instances,
use “-command isSelectPin”.
Example
Notice how by traversing all the end points specified using -levels -1 you reach more.
getFanin
This utility returns a list of path names of fanin startpoints from a specified pin.
Startpoints are either flop output pins or primary input ports.
Syntax
Arguments
-pin pin_path
Specifies the path name of the pin from which PowerArtist will return a list of fanin
startpoints.
-levels num
Specifies the number of logic levels to traverse. Inferred logic instances like
unencoded multiplexors may be very complex. They however only account for one
logic level even though when synthesized they may account for many more levels
of synthesized logic.
Default: 1; specifying -1 will traverse as many levels of logic as needed to reach
an startpoint.
-gothru instance_gothru_command
Specifies a command (default is isCombinational) that would be applied to the
logic instance in the path. Traversal will continue if this command is satisfied, and
stop otherwise. For example, if you want the traversal to go through all LATCH
instances, use “-gothru isLatch”.
-command startpoint_satisfaction_command
Specifies a command to be applied on the incident pin for startpoint satisfaction.
For example, if you want to trace fanin but stop at the select pins of all MUX
instances, use “-command isSelectPin”.
getFlops
This utility returns a list of flop instance paths. The returned flops may be either
inferred registers or instantiated gate instance flops.
Syntax
Arguments
-inst inst_path
Returns flops in the specified hierarchical instance.
-module module_name
Returns flops in the specified module. The module should be a module that can
be inferred and, therefore, not be a leaf instance.
-clock pin_or_net_path
Returns flops reached in the fanout of the specified clock pin or clock net.
-cell cell_name
Returns flops of the given gate name. You can specify a glob-style regular
expression.
-cg inferred | instantiated | both | none
Allows you to control which types of flops to return. You can filter for clock gated
flops that either had inferred, instantiated or either integrated clock gating cells or
for no clock gating. If you do not specify the -cg operand, then this criteria is not
considered.
-width num [-op eq | gt | lt | ge | le]]
Specifies the width (in bits) of a returned flop. The optional argument -op specifies
a condition that must be met. For example, if you specify:
-width 3 -op gt
this command returns only flops that are greater than 3 bits wide.
If no -width option is specified, the default is to return all the flops. If a width option
is specified without a -op argument, then the default operand is eq which means
equal.
Default: All flops are returned, -op default is eq (equals the specified num width)
-help | -h
Prints a help message for this utility.
Example
getModule
Returns the module name of the instance.
Syntax
getModule inst_path
Example
getModule /top/core1/r1/s1
This returns the module string “rxfsm” for the instance /top/core1/r1/s1:
rxfsm
getModulePorts
This utility returns bit-blasted port names of the module in the form of a list of tuples
{bit_port_name dir}.
Syntax
getModulePorts inst_path_or_module_name
Example 1
getModulePorts /top/core1/r1/s1
Run from the full-chip tutorial, this command returns the following:
{clk input} {nreset input} {match input} {frame input} {ndevsel
output} {en_rxwrd output} {en_rxmsg output} {push output}
The legal directions are “input”, “output” and “inputOutput”.
Example 2
getModulePorts /top/core1/r1/s1/#412
Run from the full-chip tutorial, this command returns the following:
{clock[0] input} {reset[0] input} {dout[1] output} {dout[0] output} {din[1] input} {din[0]
input}
This example shows how you can apply this command to inferred instances. Each bit
of a bus is represented as a separate tuple.
getModuleNets
This utility returns a list of net name paths that are local to the specified instance or
module.
Syntax
getModuleNets inst_path_or_module_name
Example 1
getModuleNet /top/core1/r1/s1
Run from the full-chip tutorial, this command returns the following:
/top/core1/r1/s1/#401 /top/core1/r1/s1/#400 /top/core1/r1/s1/#399
...
By specifying a hierarchical instance name, you will get the full path name to all nets
local to that particular instance.
Example 2
getModuleNets rxfsm
Run from the full-chip tutorial, this command returns the following:
rxfsm/clk rxfsm/nreset rxfsm/match ... rxfsm/#400 rxfsm/#399 ...
By supplying a module name, you will get the relative path name to all ports and nets
local to the module.
getModuleInsts
This utility returns a list of instances of the specified instance path or module name.
Names are relative to the specified instance path or module name.
Syntax
getModuleInsts inst_path_or_module_name
Example 1
getModuleInsts rxfsm
Run from the full-chip tutorial, this command returns the following:
#422 #421 #420 #419 #418 #417 #416 #415 #414 #413 #412 #411 #410
...
When you specify a module type name, this command returns a list of all the
instances local to that module.
Example 2
getModuleInsts /top/core1/r1/s1
Run from the full-chip tutorial, this command returns the following:
#422 #421 #420 #419 #418 #417 #416 #415 #414 #413 #412 #411 #410
...
When you specify a hierarchical instance, this command returns all instances local to
the instance.
getInstsOfModuleType
This utility returns a list of instance path names with the specified module type name.
You can specify either a Verilog module type name or an inferred instance name.
Syntax
getInstsOfModuleType module_name
Example 1
getInstsOfModuleType rxfsm
Run from the full-chip tutorial, this command returns the following:
/top/core1/r1/s1
This means that the one example of the Verilog module type rxfsm in the tutorial is /
top/core1/r1/s1.
Example 2
dcd /top/core/r1/s1
dls
full_chip_ptshell % dls
/top/core1/r1/s1
(i) clk (i) nreset (i) match (i) frame
(o) ndevsel (o) en_rxwrd (o) en_rxmsg (o) push
(n) clk (n) nreset (n) match (n) frame
(n) ndevsel (n) en_rxwrd (n) en_rxmsg (n) push
(n) #401 (n) #400 (n) #399 (n) #398
<snip>
(L) #409 (L) #408 (L) #407 (L) #406
(L) #405 (L) #404 (L) #403 (L) #402
This example, which uses the full-chip tutorial design, demonstrates how you can
use OADB utilities to look for specific inferred instance types.
getPinDirection
This utility returns a direction of the pin as input, output or inputOutput.
Syntax
getPinDirection pin_path
Example
getPinDirection /top/core1/r1/s1/clk
Run from the full-chip tutorial, this command returns the following:
input
getRelatedPins
This utility returns a list path names of related pins of this combinational instance pin.
Syntax
getRelatedPins pin_path
Example 1
getRelatedPins {/top/core1/u1/#1340/out[0]}
Run from the full-chip tutorial, this command returns the following:
{/top/core1/u1/#1340/in[1]} {/top/core1/u1/#1340/in[0]}
#1340 is an and gate in the tutorial. Querying for the related pins of the output pin
returns the two inputs pins. You can then run the following command:
getRelatedPins {/top/core1/u1/#1340/in[0]}
Run from the full-chip tutorial, this command returns the following:
{/top/core1/u1/#1340/out[0]}
Querying for the related pins of the input pin in[0] returns the output pin.
getPropVal
This utility returns the value of the specified property for the given object path (pin,
net or instance). If you do not specify a property, all properties are returned.
Syntax
Arguments
obj_path
Specifies an object path for which the value of the specified property (or all
properties) will be returned. The object patch can also be a module type name.
property
Specifies a property name as a tuple {property_name value}. The properties
that are returned for each instance type are found in the section, PowerArtist
Netlist Properties in the PowerArtist User Guide.
Example 1
getFlops
Run from the full-chip tutorial, this command returns the following:
You can then use the getPropVal on a returned flop (see the highlighted text above).
getPropVal /top/core1/j1/#1956
Run from the full-chip tutorial, this command returns the following:
Example 2
getPropVal DP512x32
{Func_Type 11} {File_Name mem.alfcell512} {Line_Number 1}
{Area 2.191939e+05} {File_Type 1}
This example finds the module named DP512x32 and returns the module properties.
Func_Type 11 is a memory. File_Type 1 means the definition is found in a Liberty
technology file.
See the Module Properties section in the PowerArtist User Guide for module
property definitions.
isRoot
This utility determines if the specified instance or module is the root design root.
Syntax
isRoot inst_path_or_module_name
Returns
Example
isRoot /top
Run from the full-chip tutorial, this command returns the following:
1
isLeaf
This utility determines if the specified instance or module is a leaf.
Syntax
isLeaf inst_path_or_module_name
Returns
Example 1
dcd /top/core1/r1/s1
isLeaf #420
Run from the full-chip tutorial, this command returns the following:
1
Instance #420 is an inferred element number in the /top/core1/r1/s1 hierarchical
instance.
Example 2
isLeaf /top/core1/r1/s1/#420
Run from the full-chip tutorial, this command returns the following:
1
This case shows you can supply an absolute path name for the instance.
Example 3
isFlop
This utility determines if the specified instance or module is a flop.
Syntax
isFlop inst_path_or_module_name
Returns
Example
isFlop /top/core1/s1/#1862
Run from the full-chip tutorial, this command returns the following:
1
isLatch
This utility determines if the specified instance or module a latch.
Syntax
isLatch inst_path_or_module_name
Returns
isMemory
This utility determines if the specified instance or module is a memory.
Syntax
isMemory inst_path_or_module_name
Returns
isSequential
This utility determines if the specified instance or module is a flop, latch or memory.
Syntax
isSequential inst_path_or_module_name
Returns
isComb
This utility determines if the specified instance or module is a combinational device. If
a module or an instance is not a sequential device, then it is identified as a
combinational device.
Syntax
isComb inst_path_or_module_name
Returns
isConnect
This utility determines if the specified instance or module is a connect primitive,
buffer or inverter.
Syntax
isConnect inst_path_or_module_name
Returns
isPin
This utility determines if the specified path is a pin.
Syntax
isPin obj_path
Returns
getCGs
This utility returns a list of integrated clock gating cells (ICGCs).
Syntax
Arguments
-enable enable_pin_path
Lists ICGCs driven by the fanout of the given enable pin.
-inst inst_path
Lists ICGCs inside the given hierarchical instance.
-module module_name
Lists ICGCs inside all instances of the specified non-leaf module.
-clock pin_or_net_path
Lists ICGCs clocked by the fanout of the specified pin or net.
-cell cell_name
Lists ICGCs of the given cell_name type. You can use a regular expression.
-width num [-op eq | gt | lt | ge | le]]
Specifies the width (in bits) that a clock gated register must meet before it is
considered as a candidate for locating its associated ICGC. The optional
argument -op specifies a condition that must be met. For example, if you specify:
-width 3 -op gt
this command returns only ICGCs whose associated clock registers are greater
than 3 bits wide.
If no -width option is specified, the default is to return all ICGCs. If a width option
is specified without a -op argument, then the default operand is eq which means
equal.
Default: All ICGCs are returned, -op default is eq (equals the specified num width)
-help | -h
Prints a help message for this utility.
Example 1
Example 2
getModule /top/core1/r1/
Run from the full-chip tutorial, this command returns the following module name:
rxchan
You can then use this module name with the getCGs command:
getCGs -module rxchan
Run from the full-chip tutorial, this command returns the following:
/top/core1/r1/f1/RDCNTR/#251 /top/core1/r1/d1/#1071
This shows that the exact same ICGC is returned if you search for it by the module
name. You would get more instances if rxchan were instantiated multiple times.
Example 3
getCGs
Run from the full-chip tutorial, this command returns all ICGCs in the design:
/top/core1/r1/f1/RDCNTR/#251 /top/core1/r1/d1/#1071 /top/core1/t1/
f1/WRCNTR/#251 /top/core1/t1/d1/#1071 /top/core1/s1/#1859 /top/
Example 4
getRegisterCGs
This utility returns a list of clock gating instances gating the register.
Syntax
getRegisterCGs reg_inst_path
getCGRegisters
This utility returns the register instances being gated by the specified clock gating
instance. Each returned instance is a tuple; the first element is the full path to the
register, the second is the enable sense when the register is gated. The value is
either neg or pos. For instance, if the code is:
if (enable)
out = in;
If (!enable)
out = in;
Syntax
getCGRegisters cg_inst_path
Example
getCGRegisters /top/core1/r1/d1/#1071
Run from the full-chip tutorial, this command returns the following:
{/top/core1/r1/d1/#1072 pos}
In this case, the #1071 was discovered using the query in one of the examples for
getCGs. This command then found the registers gated by #1071 which is a register
bank, 1072#. The returned tuple also indicates tat this enable is a pos enable
register.
reportPath
This utility reports power along the specified path.
Syntax
Arguments
reportPower
Returns the power associated with a given instance or all instances in a given
module.
Syntax
Arguments
-inst inst_path
Specifies the path name to a particular instance.
-module mod_name
Specifies the module name. You must specify either -inst or -module.
-collate true | false
When set to true, the output data will be collated.
Default: true
-mode pa | reference
Specifies the compatibility of the output power data. You can select either ‘pa’ (to
produce output that is compatible with PowerArtist) or ‘reference’ (to produce
output that is compatible with other gate-level reference power tools).
Default: pa
-levels level | all
Specifies the number (as an int) of nested levels of instances for which to
summarize the power. If you specify ‘all’ then all instances will be summarized.
Default: 0—do not summarize the power of the children of the current level
-category register | latch | logic | memory | net | clock | pad | ibp
Specifies the category(ies) for which to generate power data. The ‘ibp’ mode
reports inferred buffer power data and is applicable only with the ‘-mode reference’
setting. You can specify more than one category (-category latch logic)
Default: all categories are included
-sort_by category[:type]
Sorts the returned information by the given category and type. For category, you
can specify any of the categories listed under the -category option (register, latch,
etc.). For type, you can specify static, dynamic or load.
Example: -sort_by register:load
-unit W | mW | uW | nW
Specifies the unit for the output power values.
Default: W (watts)
-out output_file_name
Writes the report to the specified file name. If you do not specify -out, the output
will be printed to stdout.
Example 1
Instance: /top
Power Unit: W
Category Static Dynamic Total
-------------------------------------------------
register 4.35705e-06 7.02941e-04 7.07298e-04
latch 0.00000e+00 0.00000e+00 0.00000e+00
Example 2
Instance: /top/core1
Power Unit: W
Category Static Dynamic Total
-------------------------------------------------
register 4.35705e-06 7.02941e-04 0.00070729805
-------------------------------------------------
Subtotal 4.35705e-06 0.000702941 0.00070729805
0
Example 3
Instance: /top/core1/r1
Power Unit: mW
Category Static Dynamic Total
-------------------------------------------------
register 0.001 0.030 0.031
latch 0.000 0.000 0.0
logic 0.001 0.056 0.057
memory 1.903 7.357 9.26
net 0.000 0.110 0.11
clock 0.000 0.033 0.033
-------------------------------------------------
Subtotal 1.905 7.586 9.491
Instance: /top/core1/r1/dpmem
Power Unit: mW
Category Static Dynamic Total
-------------------------------------------------
register 0.000 0.000 0.0
<snip>
<snip>
Example 4
Instance: /top/core1/r1/dpmem
Power Unit: mW
Category Static Dynamic Total
-------------------------------------------------
register 0.000 0.000 0.0
latch 0.000 0.000 0.0
logic 0.001 0.035 0.036
memory 1.903 7.357 9.26
net 0.000 0.108 0.108
clock 0.000 0.006 0.006
-------------------------------------------------
Subtotal 1.904 7.506 9.41
<snip>
Instance: /top/core1/r1/dpmem/m1
Power Unit: mW
Category Static Dynamic Total
-------------------------------------------------
register 0.000 0.000 0.0
latch 0.000 0.000 0.0
logic 0.000 0.000 0.0
memory 0.434 0.403 0.837
net 0.000 0.019 0.019
clock 0.000 0.000 0.0
-------------------------------------------------
Subtotal 0.434 0.422 0.856
<snip>
Example 5
reportCGEfficiency
This command generates a comprehensive report of all inferred and instantiated
ICGCs in the design. You must first source the power database (.pdb file) for the
design before running this command.
You can use this report to determine the effectiveness of the ICGCs and determine
which enables should be possibly strengthened or removed. You can use the report
to rank the enables by sorting the data in multiple ways. In addition, this report
provides a detailed view of the clock network with respect to the ICGCs.
This command works in conjunction with the getCGs command which returns a list of
ICGCs in the design.
Syntax
Arguments
-cg_list cg_inst_list
This is a list of ICGCs you for which you wish to calculate their clock gating
efficiency. The list would typically be created using the getCGs or getRegisterCGs
commands.
Default: get all ICGCs
-cols column_list
Determines the columns that are displayed in the report/table. Each column
represents a property of the ICGCs. When you specify -cols, the default column
list is overwritten (rather than augmented). Therefore, if you want to add a column
to the columns already displayed, you need to specify all of the columns, not just
the new one. You can specify any of the following column options: cg_inst,
cg_type, flop_bits, direct_flop_bits, ct_icgc_cnt, enable_net, enable_sense,
enable_duty_cycle, enable_efficiency, enable_cum_eff, clock_net, clock_power,
clock_freq, rtl_info, file, and line. For details on each of the columns in the output
file, see Output Report Contents and Format.
Default: -cols cg_inst cg_type enable_duty_cycle enable_cum_eff clock_power
clock_net enable_efficiency enable_net file line clock_freq gated_clock_freq
-sort_by clock_power | enable_eff
Sorts the returned information by clock power or enable efficiency.
-out report_file_name
Specifies the name of the output file in which the report is to be written.
Default: Writes the output to the screen.
-format csv
Specifies the format to be used for writing the report. This option will be extended
to support other formats in the future and defaults may change at that time. To
ensure that your scripts continue to work, please specify “-format csv” with this
routine though it is optional.
Default: csv
-help | -h
Prints help information (syntax) for this command.
Example
This command prints a detailed report for every ICGC in the design. The following
table lists each of the unique fields in this report by default.
Flop Bits flop_bits The number of flop bits for the ICGC
Dir Flop Bits direct_flop_bits The number of direct flop bits for the
ICGC
*Dwns Clk Power clock_power The sum of the power burned in the
clock tree from this ICGC to the power
burned by each downstream sequential
element’s clock pin. This represents the
maximum additional clock power that
would be saved if this ICGC’s enable
were completely turned off.
Note: The column headers marked with an * are those that are generated by default
(without having to specify the -cols option).
The report is in CSV format. The first line (which takes up two lines in the following
sample report) contains the column headers.
Sample Report
readReductions
Reads one or more .csv report files generated by the ReducePower command. It
builds up an in memory representation of these files which may then be further
processed by the collateReductions command. You can only execute this command
once. Successive runs of readReductions restarts the analysis.
Syntax
Arguments
-csv list_of_csv_files
This is a Tcl list of CSV files created by the ReportReductions command.
-delim delimiter
Specifies a CSV field separator. By default, the field separator is + to match the
default for the ReducePower command.
Example 1
Example 2
collateReductions
This command reads in CSV files and generates a collated report based on the data
filter options you specify. There are five data filters you can apply. If none of these
options are specified, the default is to operate over all data points.
Syntax
Arguments
-file csv_file_name
Selects only the data from the specified CSV file.
-inst instance_path
Selects only the data for the specified instance.
-module module_name
Selects only the data for the specified module.
Example
#--------------------------------------------------------------------------------------------------
-
# Group by: inst, Sort by: power/tot
# CSV File IDs: F0 = ../Data/CSV/sim1.csv, F1 = ../Data/CSV/sim2.csv, F2 = ../Data/CSV/sim3.csv
# power/avg hit power/max line csv power/tot cnt power/tot cnt power/tot cnt GroupID
#-------------------------------------------------------------------------------------------------
1.217e-04 3 1.218e-04 104 F1 1.215e-04 1 1.218e-04 1 1.218e-04 1 fsm.#44448:W=2
6.761e-05 3 9.561e-05 24 F1 5.266e-05 1 9.561e-05 1 5.455e-05 1 fsm.#44446:W=36
5.907e-05 3 6.356e-05 53 F1 5.612e-05 1 6.356e-05 1 5.752e-05 1 transmit.#5730:W=22
4.792e-05 3 5.067e-05 20 F1 4.243e-05 1 5.067e-05 1 5.064e-05 1 fsm.#44428:W=16
4.451e-05 3 4.458e-05 2 F1 4.441e-05 1 4.458e-05 1 4.455e-05 1 fsm.#44254:W=14
3.160e-05 3 9.520e-05 82 F1 6.556e-05 2 7.001e-05 2 5.403e-05 2 receive.#1231:W=32
3.078e-05 3 3.376e-05 68 F1 2.889e-05 1 3.376e-05 1 2.970e-05 1 transmit.#5750:W=11
2.930e-05 3 2.939e-05 105 F1 2.911e-05 1 2.939e-05 1 2.939e-05 1 fsm.#44449:W=7
csv: the CSV file containing the maximum savings opportunity. The code F# will
be used rather than the actual file name. The code is listed in the report header:
# CSV File IDs: F0 = ../Data/CSV/sim1.csv, ... F2 = ../Data/CSV/sim3.csv
Then there are two columns listed for each CSV file ordered left to right—F0 to F(N-
1). In the sample report, these column pairs are color coded into groups. The blue
group represents the F0 file, the green group represents the F1 file and the orange
group represents the F2 file. Each of these groups has two values/columns:
power/tot: the total power saved for this reduction opportunity
cnt: number of listings of the reduction opportunity in the associated CSV file.The
count may be greater than one due to the fact that the containing instance may be
instantiated multiple times or multiple reductions may be applicable to the same
register.
The final field comes next.
GroupID: this is the
module_name.inferred_instance_number:register_width. This tells you
which module in the design contains the reduction opportunity, the inferred
register number impacted by this opportunity and how many bits wide it is.
Generally, the larger the number of bits, the larger the total savings.
pa2oa
This utility converts a PowerArtist name to a power database name.
Syntax
pa2oa pa_name
Example
Specifying:
pa2oa /top/core1
Will return:
#2ftop#2fcore1
End user names can’t necessarily be represented directly in the power database.
Examples are /’s. These need to be turned into escaped characters. In this example,
“#2f” is the representation for / in OpenAccess.
oa2pa
This utility converts a power database name to the equivalent PowerArtist name.
Syntax
oa2pa oa_name
oa2nl
This utility converts a power database name to a netlist name.
Syntax
oa2nl oa_name
nl2pa
This utility converts a netlist name to a PowerArtist name.
Syntax
nl2pa nl_name
Example
pa2nl
This utility converts a PowerArtist name to a netlist name.
Syntax
pa2nl pa_name
Example
nl2oa
This utility converts a netlist name to a power database name.
Syntax
nl2oa nl_name
getObject
This utility returns the power database object for the specified the object path. The
specified object can be either a module, pin or net name or an instance path.
Syntax
getObject object_path
getOccObject
This utility returns the power database occurrence object for the specified object
path. The specified object can be either a module, pin or net name or an instance
path.
Syntax
getOccObject object_path
ptoa::convertDBName
This routine converts the names from the OpenAccess namespace to a PowerArtist
namespace and vice-versa. The Open Access naming conventions are different from
those in PowerArtist. This means that when you locate an object using one of the
oa:: routines, the name of the object will often have escaped characters in it. To
make these names understandable, you need to convert the names from the
OpenAccess namespace to a PowerArtist namespace.
You must perform a similar transformation when you want to search the OpenAccess
database for names you would typically be using in PowerArtist. For instance,
PowerArtist uses a dot ('.') to separate elements in a hierarchical path. OpenAccess
uses a forward slash ('/'). PowerArtist uses the pound sign ('#') in names for inferred
objects. These need to be escaped in OpenAccess. The convertDBName routine
transforms names in either direction. By default, it assumes that the name is an OA
name that must be converted to a PowerArtist name. You need to specify the -to_oa
option if you want to convert a PowerArtist name to an OA name.
Syntax
Options
name
The name you want to convert. By default you are converting an OA name to a
PowerArtist name.
-to_oa
Indicates that you want to convert a PowerArtist name to an OA name.
Returns
Example 1
The oa::find routines expect names in the OpenAccess namespace. This means that
if you want to find a name like a[5].b.c[7], this would have to be converted into a
name that OpenAccess understands. The ptoa:: routines in this release all take
names in the PowerArtist namespace. Therefore, you do not have to call
convertDBName before you pass a name string to them.
Example 2
ptoa::getCGInfo
This routine returns the total number of register bits that are clock gated for a module
or a hierarchical instance.
Syntax
Options
-module module_name
Specifies the module for which you want to retrieve the number of clock gated
registers. All instances of that module are summed up. It is not the count of the
number of registers gated in the module definition.
-inst hierarchical_inst_name
Specifies a hierarchical instance for which you want to retrieve the number of
clock gated registers.
-cg_type (inferred | instantiated | both)
Specifies whether you want to have the count for inferred ICGCs, instantiated
ICGCs or both. If you specify this option, you must supply one of inferred,
instantiated or both.
Default: inferred
Neither -module nor -inst support wild cards.
Returns
Example
ptoa::getClockPower
This routine returns the clock power for a module or a hierarchical instance.
Syntax
Options
Returns
Example
An example that uses this command can be found in the distribution kit in the
examples/OpenAccess/getClockPower.tcl file. This example also shows how to get
the clock power for all modules or all instances.
ptoa::getFunctionTypeName
This routine returns the string for the function type for an occurrence instance and
applies only to leaf instances.
at the RT level, if it is an inferred element, it will return the inferred type name as a
string. The legal values are: or, nor, xor, xnor, nand, and, connect, connect_inv,
adder, mult, decoder, mux21, unencoded_mux, tri, register, latch, regfile, latchfile.
at the gate level (or an instantiated gate level instance at the RT level
a. if it can determine the function of the cell from the corresponding .lib, it will
return the corresponding boolean function or, nor, xor, xnor, nand, xnand,
register, latch.
b. if it can’t determine the function, it will return its module type name (or VHDL
architecture name).
at the RT level, if it is a hierarchical instance, it will return the module type name
(or VHDL architecture name).
Syntax
ptoa::getFunctionTypeName occurrenceInstance
Example
set funcType \
[ptoa::getFunctionTypeName $occurrenceInstance]
puts " FuncType: $funcType"
Returns
ptoa::getInsts
This routine returns an iterator that can be walked using the getNext command. It
returns a list of instances that match one of an optional Tcl set of instance types that
may be further filtered by a wild card path name.
Syntax
Options
Returns
Example
ptoa::getModules
This routine returns a Tcl list of the non-inferred module names in the design.
Therefore, it returns the module name for hierarchical instances and instantiated
gate instances. Each module name occurs once in the Tcl list even if the module is
instantiated multiple times.
Syntax
ptoa::getModules
Returns
Example
You can find an example that uses this command in the distribution kit in the
examples/OpenAccess/getClockPower.tcl file.
ptoa::getNets
This routine returns an iterator that can be walked using the ptoa::getNext command.
It returns a list of nets that match a wild card path name. In a hierarchical design, the
same net gets passed through the ports of the design and has many different names
depending on where you are in the hierarchy. The getNets routine will only output the
results for one unique name for that net, which is the highest up point in the
hierarchy of your design.
Syntax
Options
full_name_wild_card
The full path name of the net. Glob-style wild card characters are supported.
Returns
Example
ptoa::getNext
This routine returns an OADB handle to the next element in the iterator. If you want
to reset the iterator and point back to the first element, then specify the -reset option.
Syntax
Options
iter_obj_handle
The handle to the iterator object returned by ptoa::getNets or ptoa::getInsts
commands.
-reset
Resets the iterator and returns the status.
Returns
Example
ptoa::getObject
This routine returns an OADB handle to an object that matches a given search
criteria. You specify the type of object you are looking for and the full path name to
that object.
Syntax
Options
Returns
Example
ptoa::getProductVersion
This routine returns the current product version.
Syntax
ptoa::getProductVersion
ptoa::getPropVal
This routine returns properties attached to an OADB object.
Syntax
Options
object_handle
The handle to the OADB object.
property_name
The name of the property you want return. “*” will return all properties. For a list of
available property names, see PowerArtist Netlist Properties.
Returns
One of two possible types of values. If you supply a property name, it will return the
value. If you supply “*”, then a Tcl “list of lists” containing all the properties will be
returned. The form of the list is { {prop1 value_1} {prop2 value_2}...}
Example
ptoa::releaseIterator
This command releases an iterator created by the getInsts, getNets or getPins
commands.
Syntax
ptoa::releaseIterator iter_handle
Options
iter_handle
The handle to the iterator returned by getInsts, getNets or getPins commands.
Returns
A status
Example
ptoa::reportClockEnableEfficiency
This routine generates a comprehensive report of all inferred and instantiated ICGCs
in the design. You can use this report to determine the effectiveness of the ICGCs
and determine which enables should be possibly strengthened or removed. You can
use the report to rank the enables by sorting the data in multiple ways. In addition,
this report provides a detailed view of the clock network with respect to the ICGCs.
Syntax
ptoa::reportClockEnableEfficiency [–wrapper_module_info {
{module_name1 [enable_port_name1]} { module_name2
[enable_port_name2]} …}] [-output_file file_name] [-format csv]
Options
This command prints a detailed report for every ICGC in the design. The following
table lists each of the unique fields in this report.
Inst Name The full hierarchical path name of the ICGC instance. If the ICGC
is inferred by a feedback mux driving a register, the name of the
mux instance will be provided.
Gater Type Indicates whether this ICGC is already in the HDL or will be
created by synthesis later. It will contain one of the two values:
“inferred” or “instantiated”
Cum En Eff The efficiency of the clock tree at this level including the savings
of all downstream ICGCs. This is computed as:
1 – (Sum of clock toggles at each downstream sequential
element/(clock toggle at this ICGC’s input clock pin * number of
downstream sequential elements))
Down Clk Power The sum of the power burned in the clock tree from this ICGC to
the power burned by each downstream sequential element’s clock
pin. This represents the maximum additional clock power that
would be saved if this ICGC’s enable were completely turned off.
En Eff (1 – output_clock_frequency/input_clock_frequency)
1 means that the enable completely deactivates the downstream
clock network.
0 means that the enable always leaves the ICGC transparent.
If the input clock frequency is 0, the ICGC is not needed because
its input clock is already disabled. If this happens, you will see the
string “redundant” in the value of the field.
File The name of the HDL file where the ICGC is instantiated or
inferred
The report is in CSV format. The first line (which takes up two lines in the following
sample report) contains the column headers.
Sample Report
Additional Utilities
make_mti_mapfile
ModelSim creates a file that includes the logical library names and the locations of
the compiled simulation libraries. The file created during ModelSim processing is
called vsystem.ini. This utility examines .ini files and generates a map file. To operate
correctly, the ModelSim binary must be in your executable search path because the
interface executes some Mentor-supplied programs during operation.
For example, assume you are running ModelSim. Your current working directory
contains the top-level vsystem.ini file, you are using the PowerArtist standard VHDL
87 compatible libraries, and you want all files to be compiled locally. In this case, run
the following:
make_mti_mapfile
If you are running ModelSim but you are in a different directory than the one that
contains the vsystem.ini file and you want to use VHDL 93, run the following
command:
Arguments
-dir path
The physical file name for the logical library lib1 is ww_lib1. This file is created in
your current working directory. Use the -dir option to specify an alternative
directory location.
-f
Indicates that you want to use your simulator-supplied IEEE, STD, SYNOPSYS, and
VITAL libraries. It is recommended that you do not use this option, but use the
PowerArtist libraries by default.
-h
Provides a brief help message for the command and options.
-input path
Indicates the location of the vsystem.ini file. This is very important. This can be
any UNIX path name. Thus, if you are unable to run this program in the directory
containing your top-level vsystem.ini file, you can execute make_mti_mapfile in
another directory.
Default: ./vsystem.ini.
-o
Supplies the name of the resulting map file.
Default: mapfile.mti.
-prog name
The make_mti_mapfile program needs to access the vmap command that MTI
(Mentor) supplies.
-quiet true | false
Suppresses printing of note-level messages.
Default: false
-std 87 | 93
Indicates the language standard you want to follow. The legal values are 87 and
93. If you do not use -f and you want to use the PowerArtist-supplied VHDL 93
compatible libraries, set this value to 93.
Default: 87
Example 1
You are running ModelSim. Your current working directory contains the top-level
vsystem.ini file. You are using the PowerArtist standard VHDL 87 compatible
libraries. You want all files to be compiled locally. Enter:
make_mti_mapfile
Example 2
You are running ModelSim. You are in a different directory than the one that contains
the vsystem.ini file. You want to use VHDL 93.
make_mti_mapfile -input ../../mylib/vsystem.ini -std 93
ptFsdb2VcdPlus
This utility converts an FSDB file to a VCDe file. For details of the VCDe file, see
VCDe File Format. Also see the Generating a VCDe File from an FSDB File section
in the PoweArtist-XP User Guide.
Syntax
Arguments
-in fsdb_file_name
Specifies the name of the FSDB file you are converting to VCDe.
-out vcde_file_name
Specifies the name of the output VDCe file.
-topinst top_inst_name
Specifies the name the top instance in the design.
-start start_time_for_analysis
Specifies the start time for the analysis. Note that this is equivalent to the -
start_time option to CalculatePower.
-finish finish_time_for_analysis
Specifies the finish time for the analysis. Note that this is equivalent to the -
finish_time option to CalculatePower.
ptLibraryCheck
If you are concerned about the quality of your power libraries that you intend to use
for power analysis, you should check them using the library checker. The PowerArtist
library checker is invoked using the ptshell ptLibraryCheck utility. Two classes of
checks are available: library completeness and library data quality.
Library completeness checks include checking for:
Missing power models for input pin transitions
Missing pins in state dependencies
Library quality checks include checking for:
Unreasonably large parameter values that exceed user-defined thresholds.
Checks are made for energy, current, capacitance, power, and slew values.
Large gaps between tables indexes for slew, capacitance, and energy
Large energy variations between different power arcs of cell models
Negative total energy values for a valid sequence of cell pin transitions
Use the command options to control the checks that are performed. By default,
ptLibraryCheck will perform all checks.
Syntax
Arguments
-no_large_current
Disables checking for unreasonably large current values.
-no_large_energy
Disables checking for unreasonably large energy values.
-no_large_power
Disables checking for unreasonably large power values.
-no_large_slew
Disables checking for unreasonably large slew values.
-no_large_values
Disables all checking for unreasonably large parameter values.
-no_missing_pins
Disables checking for missing pins in state dependency.
-no_pin_model
Disables checking for missing power models for input pin transitions.
-no_large_gaps
Disables checking for large gaps between table values.
-no_large_var
Disables checking for large state-to-state energy value variations.
-max_cap float
Specifies a value above which capacitance is reported as unreasonable.
Default: 100pF
-max_current float
Specifies a value above which current is reported as unreasonable.
Default: 100mA
-max_energy float
Specifies a value above which energy is reported as unreasonable.
Default: 100pJ
-max_power float
Specifies a value above which power is reported as unreasonable.
Default: 100uW
-max_slew float
Specifies a value above which slew is reported as unreasonable.
Default: 10nS
-state_energy_factor float
Specifies a factor above which variations between state energies are reported
Default: 100
-table_gap_factor float
Specifies a factor above which gaps between table values are reported.
Default: 100
wwgaf
The wwgaf utility reads simulation activity files. Running the CalculatePower
command automatically runs wwgaf and this is the method you will most often use;
however, there may be times when you want to run wwgaf as a separate utility.
Syntax
Arguments
-a file_name
Specifies the name to be given to the Global Activity File (GAF) that is generated
by processing the -iaf argument. When you run the average power calculation
engine, it reads in this file. This argument is required.
Default: (none)
-iaf file_name
Specifies an input stimulus file generated due to a functional simulator run. The
file may be in FSDB, VCD or IAF (generated by Apache PLI routines) format. You
must specify either -activity_file or -vectorless_input_file for an average power
analysis.
Default: activities.iaf
-allowed_x_time string
Specifies an amount of time a net can be in an X state continuously (not discrete).
Specifies an amount of time a net can be in an X state continuously (not discrete).
If any signal is in X state (continuously) for more than the time specified with -
allowed_x_time then it is reported as WARNING 3344. For example:
#0
0$
#10
x$
#20
0$
#30
x$
#40
0$
#50
x$
#60
0$
#70
x$
string ends with the letter “s”, it is specified as a fraction of simulation seconds;
otherwise it is considered to be simulation ticks.
For example, if the time scale for your simulation results is 10 ns. Specifying
“pt_set heartbeat 1” will print a progress message every 10 ns of simulation time.
If you specify “pt_set heartbeat 20ns”, you will get a heartbeat message
approximately every 20 ns of simulation time.
The generated message is similar to the following:
The simulation time in the messages is approximate to the heartbeat because you
must have simulation signal change results in your IAF file that occur
approximately every heartbeat.
Default: (none)
-interval_size float
Specifies a number of intervals into which the simulation will be broken during a
time-based power analysis. For more information on the usage of this option and
an example, see Controlling Your Time-Based Power Analysis. Note that you
need to either specify -interval or -reference_clock and -num_clock_cycles.
Default: false
-save_x_nets file_name
Creates a file listing any nets that are in an X state during the simulation. This
creates a file with three columns.
Sample Output
count.n29 1 0.000000011000
count.n46 2 0.000000034000
The first column is the signal name. The second column is the number of times
the signal transitions to an X state. The third column is the cumulative time spent
by the signal in the X state. You can use the -allowed_x_time option to set the
tolerance of X detection, that is, the allowable time span beyond which signals
stuck at X get reported. You can sort this file by any of the three columns using
the UNIX “sort” utility, for example:
% sort -r -n -k 2 x_net_file_name
% sort -r -n -k 3 x_net_file_name
-r reverses the order of the result so the largest values are at the top.
-n performs a numerical sort.
-k col_num indicates the column number by which to sort.
Note
Note that enabling X net reporting can increase the run time for GAF creation.
Also, instead of using the default setting of 10 ns, it is recommended that you set
-allowed_x_time to a value that is most appropriate for the simulation. For
example, a reasonable setting might be the period for several clock cycles.
-scn file_name
Specifies a scenario file. If you’re in composite mode, this specifies the root from
which PowerArtist will search for other scenarios. This argument is required.
Default: (none)
-split integer
Runs GAF creation serially in integer passes to trade off the memory footprint for
run time.
Range: 2 to 10
-statistics register_activity
Specifies that PowerArtist capture register activity statistics for use in the
CoolTime product. CoolTime requires register activity information for a vectorless
instantaneous voltage drop analysis. Given the “-statistics register_activity” option,
CalculatePower reports the “peak” register activity over your chosen simulation
duration. This means that you also have to supply an interval size that is used to
break your simulation up into N intervals. This peak activity is output in your
CalculatePower.log file.
Example:
wwgaf -statistics register_activity -start 10ns -finish 1ms
-interval_size 20e-09
This would generate a new Note 2130 in the log file. The note would appear as
follows:
You can then supply the Peak Register Activity (.7 in this example) to CoolTime.
The Note also records the start and end time of the peak interval. Currently, there
is no support for the -statistics and -interval_size options from the PowerCanvas.
-topinst top_module_name
Specifies the full hierarchical name of the top-level module in the simulation
hierarchy. This should correspond to the module specified with Elaborate -top
option. For example, if your testbench is called “bench” and it instantiates the top
module as “dut”, specify -top_inst bench.dut.
Default: (none)
Alias: -topinst
-vcde true | false
Reads the IAF file as an Enhanced VCD format file. See Acquiring
Simulation Data in the PowerArtist User Guide for more information about IAF
and Enhanced VCD.
Default: false
The single dash (-) is interpreted to mean “pipe the IAF to wwgaf”. Your command
file must exist in the directory where you run the simulation; otherwise, it will not
be found by the spawned program. You can add any other options to wwgaf such
as -start and -finish.
3. Run your simulation.
Try a short simulation first, to make sure things are working. If things are working,
you will see the output from wwgaf intermingled with the output from the simulator,
and you will have an activities.gaf file when the simulator exits. If things are not
working, then you can examine the simulation output and the wwgaf log file, if any,
to see what went wrong.
wwvmkr
The PowerArtist wwvmkr program takes a map file—created either by hand, an
automated process or by make_mti_mapfile—and builds makefiles that you use to
compile your design. It also creates a script called wwcompile that you use to run
make on the generated makefiles. You do not execute this script directly, instead you
will execute ptCompileScript, which calls this script. This process supports the
Elaborate flow.
The wwvmkr program builds a series of make files that dictate the order in which
your VHDL files must be compiled.
Arguments
-b
Disables default binding rules and enforces VHDL-87 LRM binding. This option
is very important. The wwvmkr program follows conventions established by
the VHDL simulators from Model Technology (V-System) and Cadence (NC
VHDL) with respect to bindings. In these simulators, if you have a library lib1
statement, it is equivalent to having an additional use lib1.all statement added
immediately after it by default. This is the default binding behavior. To prevent this
behavior, add the -b switch on the command line.
-c "xxx"
Specifies ptCompileScript compiler options. To make the system follow VHDL 87
guidelines, use
-c "-k 87e"
Note that the ptCompileScript options must be in quotes because there are
spaces within the option.
Default: "-k 93e"
-d path
Defines the directory to contain your Makefiles. The default is your current working
directory.
-e file_name
Specifies an exclude file name.
Default: wwvmkr.xld.
-h
Provides a brief help message for the command and options.
-m map_file
Supplies a map file created manually or by one of the make_*_mapfile interfaces.
-s vhdl_file_extentions
Supplies a colon-separated list of VHDL source file extensions to be used when
matching file names.
Default: vhd:vhdl:87
The 87 extension is used to distinguish between the different versions of the STD
and IEEE packages required for VHDL 87 and VHDL 93. If you are compiling for
VHDL 93 you will need to specify this option with 93 in the list of extensions.
-v
Displays verbose messages. This option could be useful in determining the cause
of circular dependencies in your VHDL source.
-w lib_name
Specifies the top-level library representing work. This must be supplied and acts
as a “seed.” From the files being compiled into this specified library, wwvmkr
determines all subsequent dependencies.
Example 1
Example 2
ptCompileScript
This utility executes “make” on all of your Makefiles, determines all of the libraries
and files used in your design, and writes them out to a file in the order in which they
must be analyzed. The output of ptCompileScript is by default ptSourceFiles.tcl. This
is a Tcl file that contains the following sections:
Definitions of all of the standard libraries and the source files that define them.
AddLibrary commands that map logical library names to physical libraries. A
typical AddLibrary command would be:
AddLibrary WORK /system/u/demouser/work
CompileFile commands, providing file names, libraries, and VHDL standards (87/
93) to apply when compiling. A typical CompileFile command would be:
CompileFile -file test.vhdl -library /system/u/demouser/work -
87 yes
These commands are written so that they support the legacy flow of pre-compiled
libraries. CompileFile can simply skip the physical-to-logical mapping and accept a
logical library name:
CompileFile -file test.vhdl -library WORK -87 yes
Note that the library name in this case must match a logical library name
previously defined in an AddLibrary command. For complete syntax for the
ptSourceFiles.tcl file, see ptSourceFiles.tcl File Format.
The output of ptCompileScript is then used as the value of the -compile_script
argument to the Elaborate command to determine which files to analyze, elaborate,
and infer.
Syntax
Arguments
-c
Directs ptCompileScript to omit the default VHDL packages that otherwise are
compiled into the STD, IEEE, and SYNOPSYS libraries. This allows you to
replace the location or contents of these packages with your own.
-o output_file
Specifies an output file name.
Default: ptSourceFiles.tcl
-v
This option prints verbose messages.
pt_copy_pdb
For your use model, there may be a situation where you are working on a very large
design and want to allow it to be modified by several different designers. You want
each designer to be able to edit the same power database (.pdf) to make design
decisions. Because they need exclusive access to the power database to make the
edits, a designer will have to first copy the .pdb to a private directory, make the
desired changes in the private copy. They will then need to manually merge the
changes into a master database to perform an automatic rewrite of all changes at
one time.
You can use the pt_copy_pdb utility to copy the master power database file to a
private area. During the copy process, this utility erases any existing lock files on the
.pdb file.
Syntax
Arguments
-to dir_name
Specifies a writable UNIX directory to which the copied of the pdb will be written.
This argument is required.
-from pdb_file
Specifies the name of an existing, readable pdb file. If -from is not specified and
there is a single pdb file in the current working directory, that pdb file will be used
to locate the OpenAccess database. If there are multiple pdb files in the current
working directory, you must use the -from option.
Chapter 4
File Formats 4
Introduction
This chapter describes some of the file formats for side files that you may want to
use with your PowerArtist run.
Chapter Organization
The following file formats are described in this chapter:
Capacitance File Format
Transition Time File Format
Sequence Library Defaults File Format
SPEF File Format
Etcl File Format
Mode File Format
Global Activity File Format
Auxiliary GAF File
Verilog Startup File Format
Vectorless Activity File Format
ptSourceFiles.tcl File Format
PowerArtist prepends the name of the top module type to the beginning of all of its
nets. Some tools do not do this.
Some tools consider pound signs, dots, and other special characters as illegal.
They often precede these characters in the net name with a backslash.
Some tools specify nets by supplying a hierarchical instance name followed by a
port name.
To locate a net name in an external file, PowerArtist uses several searching rules,
listed here by order of precedence.
1. Try to find an unmodified net name as the “highest” hierarchical net in the design.
2. If the net name does not begin with the top module type name, prepend the top
module type name and try again.
3. If there are back slashes in the net name, remove them and try again.
4. Try to find the net as an instance name followed by a port name.
where net_name is a fully qualified HDL path name and capacitance values are listed
in farads. This capacitance is the net or wiring capacitance, excluding the
capacitance of pins being driven by the net. The estimators add the pin capacitances
to the values that you specify.
The two optional termination fields can be used to specify external termination
parameters for drivers with open source or drain. The resistance field specifies (in
Ohms) the value of the resistor used for pull-up or pull-down. For a pull-down
resistor, the voltage field can be either set to 0 or omitted. For a pull-up resistor, the
voltage field must be specified (in V).
In the following example, the capacitances are specified in a file named
busconall.cap. This file specifies a load of 1.5 pF for the internal signal select[3] and
30 pF is specified for the internal clock clk. For a pin pad, the load cap of 3 pF is
specified, as well as the 1 KOhm termination tied to an external supply of 3.3 V.
buscon.corelogic.select[3] 1.5e-12
buscon.corelogic.clk 30e-12
buscon.corelogic.pad 3e-12 1000 3.3
See Net Name Matching for External Files for a description of the rules used to
match net names in a scenario file to net names in the capacitance file.
where net_name is a fully qualified HDL path name and transition time values are
listed in seconds. Transition times can be specified for nets and pins separately. Rise
or fall transition times are annotated by using r or f modifiers. If a modifier is not
used, an average transition time is assumed.
In the following example, the transition times are specified in file named busconall.tt.
This file specifies a slew of 0.15 ns for the internal signal select[3]. A value of 0.05 ns
is specified for the internal clock clk.
buscon.corelogic.select[3] 1.5e-10
buscon.corelogic.clk 50e-12
See Net Name Matching for External Files for a description of the rules used to
match net names in a scenario file to net names in the transition time file.
will yield errors when running a tool such as wwalflint. For it to work, the .sld file
needs to look like the following:
curr_etcl_info
This command specifies the size of the Etcl window. The Etcl window size (in
nanoseconds) is the difference between the Etcl start and end times.
Syntax
Arguments
-clock clock_name
Specifies the name of the reference clock when using a clock-based Etcl
generation (rather than time-based).
-window size
Specifies the window size for the Etcl file, in nanoseconds.
Example
curr_etcl_info -window 40
This example sets the Etcl window size to 40 nanoseconds.
curr_set_net_events
This command applies a series of time-stamped events to a net. The events listed
describe every change in the net’s value over the time period t1->t2. The time period
is specified internally by the studio_state_setup_time_based command which is
generated by pttbengine. If you are using a command-line flow to generate the Etcl
file, you would need to manually create this command (see the CoolTime User Guide
for more information on this flow).
Syntax
Arguments
net_name
The net/primary input to which the events apply. The net names will be enclosed
in curly braces.
start_state
The initial state of the net. Possible values: 0, 1, X, Z.
event_list
The syntax of the event list is: { { time state } ...}. For example, { {3.2 1} {4.4 0} }.
For the signals that toggle over the time period t1 to t2, the time of the events will
be with respect to the start time (t1) specified in the
studio_state_setup_time_based command and must be in the nanoseconds. This
is true even if the VCD file does not have a timestamp at the specified start time.
The finish time (t2) is inclusive, meaning that if there is a timestamp for a net at
time t2 in the VCD file, then it will be present in the generated event-list for that
signal.
For all signals that do not toggle over the time period t1->t2, the
curr_set_net_events statement will have the following format:
curr_set_net_event {net_name} start_state {}
The set of curly braces, which represent an empty Tcl list, denotes no toggles.
Example
$mode "boolean_expression"
$report file_name
$result file_name
Arguments
$mode boolean_expression
This required keyword assigns a name to the operational mode you are defining.
The boolean_expression can be a single signal name or a combination of signals
in the design. The signal’s hierarchical name is, in this case, with respect to the
top most scope (or testbench scope) in the VCD—not the design’s “top” name.
You can use any of the standard boolean operators.
$report file_name
Writes the results of the analysis to the specified report file name. This file is in
ASCII format. This is an optional keyword.
$result file_name
Writes a result file, with the specified file name, for the preceding $mode
definition. This is an optional keyword. This file is for back-ward compatibility and
is not meant for you to review.
$mode txrx_tst.top1.rx_rq
$report receive.rpt
$result receive.res
$mode txrx_tst.top1.tx_rq
$report transmit.rpt
$result transmit.res
This mode file will result in modes named txrx_tst.top1.rx.rq and txrx_tst.top1.tx_rq. It
writes individual report files named receive.rpt and transmit.rpt (for the receive and
transmit signals). In addition, it generates result files similarly named receive.res and
transmit.res.
This sample file will result in a mode named "!(test.tmp||test.en)". The results of the
analysis will be written to tmp_en_high.rpt. The system will be in that mode
whenever the expression !(test.tmp || test.en) evaluates to true. The GAF file will be
broken into sections corresponding to each mode. The section will be delimited by
the following record:
For example, you will see a line that looks like the following in the GAF file:
This means that during the entire simulation duration, the system spent 4.98% of the
time in this mode.
For more information on using mode files during power analysis, see
Version 2010.1
SimTime 3e-06
StartTime 0us
FinishTime 3us
$options
f_block.ainput 0.2 1 0
f_block.ltout 0.6 3 3
f_block.diin 0.6 4 3
f_block.fpads_0.(!A&&DI&<) 0.5 2
f_block.fpads_0.(01DI~>10LT&&A) 0 6
The version record indicates that this file was created by the 2010.1 release of
PowerArtist. The elapsed simulation time is three micro-seconds as defined by the
SimTime entry. StartTime and FinishTime lines contain the data about the start and
the finish time of wwgaf processing, and correspond to the -start and -finish options
of wwgaf. The $options record indicates the beginning of an options section. In this
example the section is empty. The remaining records are of two forms:
For net transition data, the net name field is the full hierarchical name of a “real net”
in the design, as in the case of f_block.ainput. The duty cycle field is the percentage
of time that the signal was high during simulation. The two toggle fields list the
number of times that the signal transitioned up and down during the simulation.
For vector data, the name of the vector is formed by concatenating the name of the
instance and the vector expression, stripped of spaces. For static vectors, such as
(!A&&DI&<), only the duty cycle field is taken into account. The duty cycle of a
vector corresponds to the fraction of the simulation time when the vector expression
was true. For dynamic vectors such as (01DI~>10LT&&A), only the count field is
used (duty cycle is always 0). The count field contains the number of times the vector
condition was matched during the simulation.
See Net Name Matching for External Files for a description of the rules used to
match net names in a scenario file to net names in the global activity file.
Syntax
Example
$cec
top1.#0 0 45 45
In this example, net top1.#0 had 45 rise and 45 fall “used” toggles. Note that the duty
cycle will be always 0. (It is only included in this file so that the normal GAF reader in
the engine can read this file.)
Sample File
$mux
mp.mp_dbg_rdata[31] 0 0 0
mp.mp_dbg_rdata[30] 0 0 0
mp.mp_dbg_rdata[29] 0 0 0
<lines removed for brevity>
core.v
logic.v
datapath.v
top.v
-v asic_lib.v
-y /user/tools/libraries/lca500k/verilog
The -v option specifies a file of library cells and the -y option specifies a directory of
library cells. Note that the listing of the Verilog modules is order-independent.
Comments can be placed and begun with either double forward slash as in Verilog,
or with a semi-colon. The Verilog convention of forward slashes and asterisks is also
supported, as shown in the following examples.
// this is a comment
; this is also a comment
/* this is also a comment */
+libext+
+incdir+
+define+
# Clocks:
#
# Name Frequency (Hz) Duty Cycle (Default: 0.5)
#
SetNetStimulus -net rxchan.clk -frequency 6.6e+07
SetNetStimulus -net rxchan.pci_clk -frequency 6.6e+07
#
# Primary IOs:
#
# Name Frequency (Hz) Duty Cycle (Default: 0.5)
#
SetNetStimulus -net {rxchan.din[0]} -frequency 1.40451e+07
SetNetStimulus -net {rxchan.din[1]} -frequency 1.40451e+07
SetNetStimulus -net {rxchan.din[2]} -frequency 1.40451e+07
<snip>
#
# Other Nets:
#
# Name Frequency (Hz) Duty Cycle (Default: 0.5)
#
SetNetStimulus -net {rxchan.wr_addr[0]} -frequency 1.75861e+07
SetNetStimulus -net {rxchan.wr_addr[1]} -frequency 8.5564e+06
SetNetStimulus -net {rxchan.wr_addr[2]} -frequency 4.5861e+06
SetNetStimulus -net {rxchan.wr_addr[3]} -frequency 2.5861e+06
SetNetStimulus -net {rxchan.wr_addr[4]} -frequency 1.5861e+06
# Memories:
#
# Name Avg. Frequency(Hz) of Local Nets
#
This file is used in the block-level analysis tutorial in the PowerArtist User Guide. For
details, see PowerArtist Tutorial Part 1: Power Analysis.
Section 1
global ptcsStdLibraries
This line defines a global variable that will be used by the remaining Tcl commands in
the file.
Section 2
This is where you define the standard libraries the VHDL language expects and their
interdependencies. The library name is one of the standard libraries and must be in
capital letters. The standard libraries are STD, SYNOPSYS and IEEE. The space-
separated list_of_libraries specifies the libraries that must be compiled before this
library can compile. This list might be empty. For libraries that are part of the
PowerArtist standard distribution, these are the following lines that get generated:
set ptcsStdLibraries(STD,dependency) {}
set ptcsStdLibraries(SYNOPSYS,dependency) {STD}
set ptcsStdLibraries(IEEE,dependency) {STD SYNOPSYS}
This says that STD must be compiled before SYNOPSYS which must be compiled
before IEEE.
Section 3
This section contains a list of files that must be compiled into each of the standard
libraries.
Syntax
set ptcsStdLibraries(library_name) {list_of_file_names}
}
The list_of_file_names is a Tcl list. The files are located by searching for them in the
$POWERTHEATER/pthdl_src directory.
Example
set ptcsStdLibraries(STD) {
standard.vhd
textio.vhd
}
This means the library, STD, has compiled into pthdl_src/standard.vhd and pthdl_src/
textio.vhd.
Section 4
This section consists of AddLibrary commands that define all of the logical-to-
physical name mappings for all of your libraries in use in your VHDL design. The
AddLibrary commands are not used for Verilog files. A typical AddLibrary command
would be:
AddLibrary WORK /system/u/demouser/work
Section 5
This is the most complex portion of the file. This section accepts both the
SetIncDirPath and the CompileFile commands. If you are using ptSourceFiles.tcl to
supply the names of your Verilog source files rather than the traditional Verilog
startup file, you may have to specify directories that can be searched for include files.
This is done through the SetIncDirPath command. The CompileFile command
defines how to compile each of the source files in your design. VHDL compilation
has strict rules that must be followed. You must indicate the target library into which
the file will be compiled. If a file must be compiled before another one to meet VHDL
semantic rules, its CompileFile command must occur earlier in the file.
For example, suppose you have the following Verilog source file fragments:
In file “design.v”:
`include "macros.v"
module top(`AA, bb, cc);
input `AA, bb;
output cc;
wire tt;
sub u0 (`AA, bb, tt);
endmodule
In file “sub.v”:
`include "macros.v"
module sub(pp, `QQ, rr);
input pp, `QQ;
output rr;
assign rr = pp & `QQ;
endmodule
And assume the design.v should get its macros.v file from sub-directory include1
while sub.v gets its macros.v file from include2.
This would search for files included by design.v in dir1, then dir2, then dir3.
[Average_Power_Analysis]
geometry=@Rect(166 164 778 544)
[HDL_Inferencing]
geometry=@Rect(219 253 664 472)
[MainWindow]
SchemColorGroup=actionColorSchematicPower
TreeColorGroup=actionColorTreePower
TreeFilterGroup=actionFilterNothing
TreeSortGroup=actionSortTreeName
actionAutoHidePins=true
actionColoriseDataNets=false
actionColoriseSelectNets=false
actionDisplayGates=false
actionDisplayInferredInstances=false
actionDisplayRegisters=false
actionHierarchy=true
actionIgnoreSelectCones=true
actionSchematic=true
actionSchematicLegend=false
actionTreeLegend=false
actionWaveform=false
geometry=@Rect(120 100 672 461)
mainViewSplitter=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x2\0\0\0\xfc\0\0\0\x92\x1\0\0\
0\x6\x1\0\0\0\x2)
[PTQTreeView]
net_table_1=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0
<snip>
[Pin_Net_Info]
geometry=@Rect(470 211 400 300)
[PowerArtist-XP_-_Console]
geometry=@Rect(23 23 584 318)
[RTL_Inferencing]
geometry=@Rect(58 92 659 446)
[Time_Based_Power_Analysis]
geometry=@Rect(69 159 803 445)
[Vector_Analysis]
geometry=@Rect(30 64 843 543)
Table 3 Terminology
Intermediate Activity File (IAF) Apache Design Power Tools format for simulation activity
data.
support VHDL-specific data types. Activity data on objects of these data types would
be lost in the Standard VCD approach or the standard Intermediate Activity File (IAF)
approach. The Enhanced VCD format preserves names and structures for these
complex objects, thereby allowing PowerArtist to match activities on these objects
with the corresponding objects in the Scenario database.
Type
Floating Point No No
Physical No No
Example
The following example demonstrates how a VHDL record is handled in the VCDe
format.
package my_pack is
type my_record is
record
field1 : integer;
field2 : bit_vector ( 0 to 1 );
end record;
end my_pack;
The above type declaration for MY_RECORD (and the name conventions) in the
VCDe format match the scenario file declaration of MY_RECORD, allowing
PowerArtist to attribute accurate activity to the record for power calculation purposes.
In contrast, the standard VCD format has no provision for composite data type like
records, and would prevent PowerArtist from matching simulation activity on
MY_RECORD to the scenario database. The net result of such a mismatch would be
that no power would be attributed due to any activities on MY_RECORD. This may
lead to inaccuracy, especially if the use of such data types is prevalent in the design.
Chapter 5
Introduction
This chapter lists error messages that PowerArtist can generate. The messages are
organized according to what section of the tools generated the message.
The messages are classified in increasing levels of severity:
1. NOTE. Specifies the state the tool is in so that you can monitor the tool’s progress.
2. WARNING. Indicates that a condition has been found, that while probably not
catastrophic, will negatively affect the quality of results.
3. ERROR. Indicates that a condition has been encountered that prevents the tool
from continuing execution.
4. FATAL. Indicates that the tool has entered an abnormal state. Contact Apache
Design’s customer service whenever a fatal condition is encountered.
The following table indicates by number which section of the toolset is responsible
for generating different message numbers.
1000-1099 Indicate fundamental problems that the tools experience related to the
machine configuration, licensing, and/or file protections.
1400-1499 Internal database messages that can be generated if the HDL being
analyzed contains semantic errors.
1500-1599 Generated during the process of reading files such as the internal
SFL_LIB.DAT file.
2000-2199 Generated by the GAF reader and may indicate problems in your VCD
file or setup.
Critical Messages
Warnings and Errors can be classified as “critical”. A critical message is any
message where the reported problem may have a significant impact on either
performance of the software or accuracy of results. These messages are
summarized in the table that PowerArtist prints in the log after an executable is
complete (see the following sample).
In this example, there is one critical warning. The Suppr. (suppressed) column lists
warning messages for which the -nowarn option has been set.
Chapter 6
Using LSF
You can use the Load Sharing Facility (LSF) in either batch or interactive mode in
PowerArtist.
For batch mode, you can simply submit jobs using bsub, for example:
bsub -Rsol8 ptshell -tcl Elaborate.tcl
The command you use could easily be a complex Tcl script.
You can use one of two methods to submit interactive jobs.
Method 1
The first method is to spawn an X-terminal, for example:
bsub -Rsol8 xterm
This opens up an xterm window in which you can set the environment variables
necessary to run PowerArtist and type ptshell.
Do not attempt to run PowerArtist using either the -I or -Is switches to LSF. For
example:
bsub -Rsol8 -Is ptshell
will spawn the job, but you will not be able to enter any commands. If you type:
bsub -Rsol8 -I ptshell
you will not get the ptshell prompt, but you will be able to enter Tcl commands such
as Elaborate.
Method 2
The second method is to submit jobs using the lsrun command which is specifically
designed for interactive job submittal using LSF. For example:
lsrun ptshell
This will then give you an active ptshell with a prompt at which you can submit further
commands.
Appendix A
All designs make use of a design language to create simulation models as well as to
act as the source for a gate-level synthesizer. PowerArtist needs to be able to handle
both types of data. It needs to be able to successfully parse RTL code that is meant
to be input to a simulator and it must be able to inference RTL code that is meant to
be input into a gate-level synthesizer as well as a simulator. This appendix describes
the SystemVerilog, Verilog 2001 and VHDL constructs supported by PowerArtist.
SystemVerilog Support
The following table lists the constructs that are supported (parsed and inferenced).
Structures (packed) Y Y
Structures (unpacked) Y Y
Enumerations Y Y
Unions (packed) Y Y
Casting Y Y
Arrays (unpacked) Y Y
Constants Y Y
Variables Y Y
Process always_comb Y Y
always_latch Y Y
always_ff Y Y
$root Y Y
Interface modports Y Y
Interface ports Y Y
Parameterized interfaces Y Y
Generic interface Y N
Appendix B
SetExcludeModules voltage
SetHighFanoutNet wait_for_license
SetIncDirPath wireload_library
SetInstanceStimulus work_library
SetLibrary WriteClockGatingConstraints
SetMemoryGatingCell WriteReductionCompareFile (Beta)
SetNameMapFile WriteTechnologyFile
SetNetStimulus wwgaf
SetPortStimulus wwvmkr
SetPower zero_delay
SetPowerTarget
SetPowerTechComments
SetSpefFiles
SetTopSpef
SetVoltageThreshold
SetVT
SetWireLoadMode
SetWireLoadModel
SetWireloadScalingFactor
SetWireLoadSelectionTable
show
show_reduction_net_name
skip_clock_analysis
skip_reduction_list
spef_file
start_time
statics_threshold
statistics
stimulus_processing_passes
suppress_messages
synlib_files
system_verilog
tag_blocks
time_based_cpf_in_file (Beta)
time_based_cpf_output_file (Beta)
time_based_report_file
time_based_report_options
time_based_upf_in_file (Beta)
time_based_write_power_db
top
top_instance
TraceThruCell
TraceThruInstance
transition_time_file
unlimit_interval_size
use_library_file_names
use_non_scan_flops
use_rtl_sim_data
use_scan_flops
vectorless_input_file
verilog_2001
verilog_startup_file
vertical_report_instances
vertical_report_sort_mode
Index
H num_clock_cycles 27 reduction_upf_in_file 86
heartbeat 35, 92, 249, 250 reference_clock 27
html_report_directory 35, 92 O relative frequency information
file format 271
output_ascii_netlist 58
remap command 96
I output_current 37
reset_library_negative_power 37, 94
ignore_SPEF_C_comments 35, 93 output_report_file 102
reset_negative_power 38, 94
ignore_toggles_through_x 35, 93 output_rtl_dir_name 103
rewrite_debug_flags 103
ignore_translate_off 54, 102 output_startup_file 103
rewrite_log_file 103
ignore_translate_off_files 54, 102 rewrite_no_inline_modules 103
instance_power_threshold 35, 93 P rewrite_report_file 104
interpret_pin_caps_as 36, 93 PACE technology files, specifying
27, 82 S
L parameter_maps 55
saif_file 27
library_defaults_file 36, 93 pc_constraint_file 94
save_clock_trees_netlist 27, 86
peak_cycle_file 37
list_required_traces 54 save_x_nets_file 28, 87, 249, 251
load_file 36, 93 peak_cycle_processing_mode 37
scenario file 13
lower_case_vhdl 57 power
scenario_file
component hierarchy 6
28, 56, 60, 64, 87, 104, 142, 249, 2
definition 1
M 52
dynamic 2, 7
sdc_clocks_gated 78
macro_directories 57 static 4, 8
sdc_clocks_mode 78
make_mti_mapfile command power_db_name 42, 78, 101, 103, 140
sdc_command 77
examples 246 power_tech_file 27, 82, 142
sdc_files 77, 142
max_bit_width 93 preserve_regfile 58
sdc_log 78
max_clock_depth 36, 93 print_missing_sim_nets 27, 82
sdc_out_file 78
max_time_stamps 36 ptcl_output_file 27, 61, 64
seed vector format 264
maximum_number_of_errors 36, 93 ptLibraryCheck command 247
Sequence Library Defaults (.sld) file
message log file format 68, 271
format 262
micro-architectural inferencing 13 Q SetCellDefaultFanout command
min_regfile_bit_count 57
quiet 27, 58 111, 138
min_regfile_word_count 57
SetClockGatingStyle command 114
min_regfile_word_length 57
R SetClockNet command 116
mixed_sim_prob_estimation
skip_clock_analysis 28, 87
26, 61, 63, 81 reduction_classes 82
skip_reduction_list 88
mode file format 68 reduction_cpf_in_file 82
spef
mode_file 26 reduction_cpf_output_file 83
file format 263
monitoring arcs 67 reduction_debug_flags 83
spef_file 29, 143
multiple_license_files reduction_dont_touch_clocks 83
split 252
36, 58, 61, 93, 142, 143 reduction_dont_touch_modules 83
start_time 29, 88
multiple_testbench_control_file 26 reduction_hierarchy 83
stimulus file format 271
reduction_max_bit_width 84
stimulus_processing_passes 38, 94
N reduction_max_memory_split 84
suppress_messages 29, 58, 89
reduction_min_bit_width 84
nets synlib_files 30, 56, 62, 64, 143
reduction_overwrite_power_db 84
name matching for external files system_verilog 56, 104
reduction_priority 85
17, 259
reduction_report_file 85
transition counting 9 T
no_default_macros 58 reduction_report_log_file 84
no_maximum_error_list 36, 58, 94 reduction_report_options 85 tag_blocks 56
no_module_net_capacitances 37, 94 reduction_results_file 86 Tcl file format 49
no_slew_calculation 37, 94 reduction_topology 86 time_based_cpf_in_file 30
time_based_cpf_output_file 38 Z
time_based_report_file 30 zero_delay 32
time_based_report_options 30
time_based_upf_in_file 30
time_based_write_power_db 30
top 56, 77, 101, 140, 142
top_instance 30, 60, 64, 89, 252
transition counting on nets 9
transition times
automatic calculation 15
file format 261
transition_time_file 31, 77, 89
U
unlimit_interval_size 38
use_existing_gaf 31, 81
use_library_file_names
31, 89, 101, 104
use_non_scan_flops 38
use_rtl_sim_data 31, 62, 64
use_scan_flops 31, 89, 94
V
VAF (Vectorless Activity File)
format details 121, 124, 126, 272
variables
alphabetical listing of all 289
vectorless_input_file 31, 89
Verilog startup file format 271
verilog_2001 56, 104
verilog_startup_file 56, 101, 143
vertical_report_instances 31, 89
vertical_report_sort_mode 31
voltage 38, 90, 94
W
wait_for_license
32, 58, 62, 90, 142, 143
wireload_library 38, 94
work_directory 58
wwgaf
generating register activity
29, 88, 249, 252
wwgaf conversion utility
automatic spawning 253
wwvmkr command
examples 255
options 254, 256