Skip to content

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
  • scalar mode is for non-SSTA analysis
  • normal mode uses gaussian normal distributions
  • skew_normal mode 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]
  • -echo echos commands as they are read
  • -verbose prints 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.