OpenSTA Timing Analyzer Release Notes¶
This file summarizes user visible changes for each release. See API changes for changes to the STA API.
2026/08/02¶
The set_path_margin command applies a signed slack adjustment to the
capture-clock side of matching timing paths. A positive margin
tightens the path and a negative margin loosens it.
set_path_margin [-setup] [-hold] [-rise] [-fall]
[-from from_list|-rise_from from_list|-fall_from from_list]
[-through through_list|-rise_through through_list|-fall_through through_list]
[-to to_list|-rise_to to_list|-fall_to to_list]
[-comment comment]
margin
2026/07/20¶
The read_vcd command supports -begin_time / -end_time to limit
activity annotation to a VCD time window.
read_vcd [-scope scope] [-mode mode_name]
[-begin_time begin_time] [-end_time end_time] filename
2026/05/01¶
The write_sdc command supports a -mode argument.
write_sdc [-mode mode]
2026/03/23¶
The write_path_spice command -spice_directory has been changed to
-spice_file, which is a prefix for the spice filenames. Successive
paths are written in files named <spice_file>_<path_number>.sp.
Release 3.0.1 2026/03/12¶
Statistical timing (SSTA) with Liberty LVF (Liberty Variation Format) models is now supported. Statistical timing uses a probability distribution to represent a delay or slew rather than a single number.
Normal and skew normal probability distributions are supported.
SSTA is enabled with the sta_pocv_mode variable.
set sta_pocv_mode scalar|normal|skew_normal
scalarmode is for non-SSTA analysisnormalmode uses gaussian normal distributionsskew_normalmode is for skew normal LVF moment based distributions
The target quantile of a delay probability distribution (confidence level) is
set with the sta_pocv_quantile variable.
sta_pocv_quantile <float>
The default value is 3 standard deviations, or sigma.
Use the variation field with report_checks or report_check_types to see
distribution parameters in timing reports. See Examples
for a command file, sample report, and the Liberty timing groups used
for normal and skew-normal LVF.
The following commands now support a -report_variance argument.
report_arrival [-report_variance]
report_required [-report_variance]
report_slack [-report_variance]
report_slews [-report_variance]
report_edges [-report_variance]
The following commands now support a -digits option.
report_edges [-digits digits]
report_slews [-digits digits]
2026/02/24¶
The define_scene -library argument now takes the library name or a
library filename. If a filename is used, it must be the same as the
filename used to read the library with read_liberty.
Release 3.0.0 2025/11/26¶
This release adds multi-corner multi-mode (mcmm) support. The SDC constraints in each mode describe a different operating mode, such as mission mode or scan mode.
A "scene" is the combination of a mode and corner. Each scene can have separate min/max liberty and spef files.
The basic structure of a multi-corner/multi-mode command file is:
read_liberty
read_verilog
link_design
read_sdc -mode... or set_mode followed by sdc commands
read_spef -name...
define_scene...
report_checks [-scenes]
This is an example script with 2 corners, 2 modes and 3 scenes.
read_liberty bc.lib
read_liberty wc.lib
read_verilog design.v
link_design top
read_sdc -mode run design.sdc
read_sdc -mode scan design_scan.sdc
read_spef -name bc bc.spef
read_spef -name wc wc.spef
define_scene bc \
-mode run \
-liberty bc \
-spef bc
define_scene wc \
-mode run \
-liberty wc \
-spef wc
define_scene scan \
-mode scan \
-liberty wc \
-spef wc
report_checks
report_checks -scenes bc
report_checks -scenes wc
report_checks -scenes scan
Alternatively, the set_mode command can be used to define commands
for each mode at the command level instead of using SDC files.
set_mode run
create_clock -period 10 clock
set_input_delay 0 -clock clock [all_inputs -no_clocks]
set_output_delay 0 -clock clock [all_outputs]
set_mode scan
create_clock -period 100 scan_clock
set_input_delay 0 -clock scan_clock scan_in
set_output_delay 0 -clock scan_clock scan_out
The define_corners command is supported for compatibility but should
not be used with mcmm flows. Similarly, the -min/-max arguments to
read_liberty and read_spef are supported for compatibility but should
not be used with mcmm flows.
An initial mode and scene named default are defined for single mode,
single corner analysis. SDC commands defined interactively and read
with read_sdc without a -mode argument are defined in the default
mode.
Use the set_mode command to define a mode or set the command
interpreter to add following commands to mode mode_name.
set_mode mode_name
If mode_name does not exist it is created. When modes are created the
default mode is deleted.
The read_sdc command has a -mode argument to assign the commands in the file
to a mode.
read_sdc [-mode mode_name]
If the mode does not exist it is created. Multiple SDC files can
append commands to a mode by using the -mode argument for each
one. If no -mode argument is used the commands are added to the
current mode.
The define_scene command defines a scene for a mode (SDC), liberty files
and spef parasitics.
define_scene -mode mode_name
-liberty liberty_files | -liberty_min liberty_min_files -liberty_max liberty_max_files
[-spef spef_file | -spef_min spef_min_file -spef_max spef_max_file]
Use get_scenes to find defined scenes.
get_scenes [-modes mode_names] scene_name
Use the read_spef -name argument to append multiple parasitics files
to annotate hierarchical blocks. Scene definitions use the spef name
to specify which parasitics to use for each scene.
read_spef -name spef_name
report_parasitic_annotation [-name spef_name]
If -name is omitted the base name of the file name is used.
The read_spef -corner/-min/-max arguments are supported for compatibility
but will be removed in a future release.
The read_spef -reduce options don't work because sdc, liberty ap isn't known.
The report_checks and report_check_types commands support a -scenes
argument to report timing checks/paths from multiple scenes.
report_checks -scenes
report_check_types -scenes
report_slews -scenes
report_clock_latency -scenes
To annotate delays with SDF when there are multiple scenes, use
the -scene argument.
read_sdf -scene
report_annotated_delay -scene
report_annotated_check -scene
SDF annotation for mcmm analysis must follow the scene definitions.
VCD annotation with read_vcd now supports a -mode argument.
read_vcd [-mode mode_name]
The -corner args has been removed from the following commands because they are no
longer necessary.
set_load -corner
set_port_fanout_number -corner
The report_pulse_width_checks command is no longer supported. Use
report_check_types -min_pulse_width.
Delay calculation slew values now propagate through set_case_analysis
and set_logic_zero, set_logic_one, set_logic_dc constraints.
Power analysis now ignores set_case_analysis and set_logic_zero,
set_logic_one, set_logic_dc.
Release 2.7.0 2025/05/19¶
The OpenSTA library libOpenSTA and sta executable are now built in the
build directory instead of app/.
The set_max_delay and set_min_delay commands now support the -probe option.
With -probe these commands do not break paths at internal (non-startpoint) pins.
The report_checks command now supports a -unique_edges_to_endpoint option
to remove paths through identical pins and rise/fall edges.
report_checks [-unique_edges_to_endpoint]
Instances now have pins for verilog netlist power/ground connections.
Sta::findPathEnds group_paths arg has been changed from PathGroupNameSet*
to StringSeq&.
Release 2.6.1 2025/03/30¶
The -list_annotated and -list_not_annotated arguments to the
report_annotated_delay and report_annotated_check commands have been renamed to
-report_annotated and -report_unannotated.
The Tcl source command is no longer redefined to support -echo and
-verbose arguments and redirection. Use the include command instead.
include [-echo] [-verbose] filename [> filename] [>> filename]
-echoechos commands as they are read-verboseprints command results as they are evaluated
Unlike the Tcl source command, include expands filenames with tilde ~
and respects sta_continue_on_error.
Release 2.6.0 2024/07/22¶
The version of C++ used by OpenSTA is now 17. The Cudd BDD package is now required.
The USE_TCL_READLINE option defaults to ON.
The variable link_make_black_boxes has been removed.
Use the -no_black_boxes option to the link_design command.
link_design [-no_black_blocks] [top_cell_name]
The all_inputs command now supports -no_clocks to remove clocks
inputs from the returned list.
all_inputs [-no_clocks]
The read_power_activities command has been deprecated. Use read_vcd instead.
read_vcd [-scope scope] filename
The Switching Activity Interchange Format (SAIF) for reading power activities
is now supported by the read_saif command.
read_saif [-scope scope] filename
The report_checks -group_count option has been renamed to -group_path_count.
The report_checks -endpoint_count option has been renamed to -endpoint_path_count.
The report_checks -field hierarchical_pins field reports hierarchical pins between
a driver and a load in the path report.
The suppress_msg and unsuppress_msg commands allow suppression/unsuppression of
warnings/errors by ID. Message IDs can be found in messages.
Release 2.5.0 2024/01/17¶
The report_net -connections, -verbose and -hier_pins flags are deprecated.
The report_instance -connections and -verbose flags are deprecated.
The options are now enabled in all cases.
The read_spef parasitic reduction arguments have changed. The
-reduce_to and -delete_after_reduce arguments are deprecated and
replaced with the -reduce flag. With the -reduce flag, the current
delay calculator reduces the parasitic network to the appropriate type
and deletes the parasitic network.
The report_clock_skew and report_clock_latency commands now support
the -include_internal_latency flag to control inclusion of macro
internal clock delays from the cell liberty min_clock_tree_path /
max_clock_tree_path timing groups.
report_clock_skew -include_internal_latency
report_clock_latency -include_internal_latency
The report_clock_skew requires a -scene argument if multiple scenes are defined.
The all_inputs command now supports the -no_clocks argument to exclude
clocks from the list.
all_inputs [-no_clocks]
The report_activity_annotation command reports power activity annotation
from vcd, saif or the set_input_activity command.
report_activity_annotation [-report_unannotated] [-report_annotated]
Release 2.4.0 2023/01/19¶
The report_parasitics_annotation command reports SPEF annotation completeness.
report_parasitics_annotation [-report_unannotated]
The read_power_activities command reads a verilog vcd file and extracts
pin activities for power analysis.
read_power_activities -vcd filename
The report_cell command has been removed; use report_instance.
The read_liberty command latch inference (see the command documentation) is now disabled by default.
The -no_latch_infer flag is deprecated.
To enable latch inference, use the -infer_latches flag.
The report fanout and capacitance fields are now shown on output pin lines rather than net lines.
Release 2.3.3 2022/09/24¶
Tcl readline support added. See the repository README.md for build instructions.
Release 2.3.2 2022/07/03¶
The liberty default_wire_load is now ignored. You must explicitly set the wire load
model with the set_wire_load_model command to apply wire load model based parasitics.
Release 2.3.1 2020/11/08¶
The read_sdf command no longer supports the -analysis_type, -type, -min_type,
and -max_type arguments. Use the set_operating_conditions -analysis_type
command to set the analysis type before read_sdf.
Release 2.2.0 2020/07/18¶
The report_units command reports the current units used by commands.
report_units
The report_check_types command now supports -min_fanout, -max_fanout,
-max_capacitance, and -min_capacitance.
report_check_types [-min_fanout] [-max_fanout] [-max_capacitance] [-min_capacitance]
The insert_buffer command is no longer supported.
Release 2.0.0 2018/09/28¶
The command line options have changed to the following:
-help show help and exit
-version show version and exit
-no_init do not read .sta init file
-threads count|max use count threads
-no_splash do not show the license splash at startup
-exit exit after reading cmd_file
cmd_file source cmd_file
Builds using Autotools/configure are no longer supported.
Use CMake as documented in README.md.
The check_timing command -no_output_delay checks output ports for
set_output_delay.
The report_power command reports the power consumption of the design
or a specific instance.
report_power [-instances inst] [-digits digits] [> filename] [>> filename]
The internal, switching, leakage and total power are reported. Design power is reported separately for combinational, sequential, macro and pad groups.
Use -instances to report power for a specific instance.
Use the set_power_activity command to specify activity/duty
globally using -global, the input port default using -input,
or for input ports using -input_ports, or pins using -pins.
set_power_activity [-global]
[-input]
[-input_ports ports]
[-pins pins]
[-activity activity]
[-duty duty]
The write_path_spice command writes a spice netlist for a timing path.
write_path_spice -path_args path_args
-spice_directory spice_directory
-subckt_file subckt_file
-lib_subckt_file lib_subckts_file
-model_file model_file
-power power
-ground ground
Use path_args to specify -from/-through/-to as arguments to the
find_timing_paths command. For each path, a spice netlist and the
subckts referenced by the path are written in spice_directory. The
spice netlist is written in path_<id>.sp and the subckt file is
path_<id>.subckt.
Spice netlists for liberty library cells are read from
lib_subckts_file. The spice netlists used by the path are written to
subckt_file, which spice_file includes. The device models used by the
spice subckt netlists in model_file are included in spice_file. Power
and ground names are specified with the -power and -ground arguments.
The spice netlist includes a piecewise linear voltage source at the
input and .measure statement for each gate delay and pin slew.
The report_checks and report_check_types commands now support an
-unconstrained flag.
report_checks -unconstrained
report_check_types -unconstrained
The sta_report_unconstrained_paths variable will be supported for
compatibility in the current release.
The transition_time path reporting field has been renamed to slew.
report_checks -fields {slew}
report_check_types -fields {slew}
The read_parasitics command has been renamed read_spef and no longer
supports the SPF format.
The make_instance command now takes a single instance name argument
and returns the instance.
make_instance instance_name
The make_net command now takes a single net name argument and returns
the net.
make_net net_name
The delete_instance command deletes a single instance instead of a list
of instances.
delete_instance instance
The delete_net command deletes a single net instead of a list
of nets.
delete_net net
The disconnect_pins command is renamed disconnect_pin and disconnects a
single pin.
disconnect_pin net pin
The report_tns and report_wns commands print the value returned by
total_negative_slack and worst_negative_slack respectively.
report_tns
report_wns
report_worst_slack
The set_clock_sense command was deprecated by SDC 2.1.
Use set_sense -type clock instead.