Skip to content

STA API changes

This file summarizes STA API changes for each release.

2026/06/22

Liberty::hasSequentials has been renamed isSequential.

Release 3.1.0 2026/03/25

OpenSTA now uses std::string and std::string_view instead of const char *. Lookup functions such as Network::findPin use std::string_view that accept a const char *, std::string, or std::string_view caller argument.

2026/03/19

LibertyCell::footprint() returns const std::string& instead of const char *. LibertyCell::userFunctionClass returns const std::string& instead of const char *.

The Sdc, Liberty, ConcreteLibrary, ConcreteNetwork classes have been updated to use std::string and std::string_view instead of const char *. std::string_view is used when the lifetime of the string argument is only while the function is called. std::string is used when the string value outlives the function call because it is stored in data structures.

The LibertyPort functions relatedGroundPin and relatedPowerPin are renamed to relatedGroundPort and relatedPowerPort and return LibertyPorts instead of strings.

2026/03/12

The Report class used for reporting and error messages now uses std::format instead of printf.

sta::format is a wrapper for std::format that will compile on gcc8, which centos7 uses and does not support std::format.

stdstrPrint, stringPrint, stringAppend have been removed. Use sta::format.

reportLineString is now reportLine.

Release 3.0.0 2026/01/03

OpenSTA now requires C++ 20.

Corner replaced by Scene:

  • mode()
  • parasitics(min_max)

DcalcAnalysisPt replaced by scene/min_max. PathAnalysisPt replaced by scene/min_max.

StaState::sdc_ moved to Mode. StaState::sim_ moved to Mode. StaState::clk_network_ moved to Mode. StaState::parasitics_ moved to Scene.

Sta::findPathEnds group_paths arg has been changed from PathGroupNameSet* to StringSeq&.

Sta::isClock has been removed. Use mode->clkNetwork()->isClock instead.

Old New
Sta::vertexSlew slew
Sta::vertexSlack slack
Sta::vertexSlacks slacks
Sta::vertexArrival arrival
Sta::vertexRequired required
Sta::pinSlack slack
Sta::pinArrival arrival

FuncExpr::Operator::op_* renamed to FuncExpr::Op::*. FuncExprPortIterator has been removed. Use FuncExpr::ports().

Sdc::clocks() now returns ClockSeq&. Sdc::clks() has been removed.

The Vector/Map/Set/UnorderedSet classes have been removed and replaced by the std containers. The member functions are now templated functions found in ContainerHelpers.hh.

The Graph slew_rf_count option is no longer supported.

Release 2.6.2 2025/03/30

The following functions have been renamed to to_string and return std::string instead of const char *:

Vertex::name
FuncExpr::asString
TimingRole::name
MinMax::asString
MinMaxAll::asString
RiseFall::asString
RiseFallBoth::asString
Transition::asString
Tag::asString
timingSenseString

The following classes now return const objects: MinMax, MinMaxAll, RiseFall, RiseFallBoth, Transition, TimingRole.

Liberty PgPorts are now LibertyPorts with additional member functions for Liberty pg_pins.

The write_verilog command always sorts the Verilog file instances. The -sort argument is ignored.

Release 2.6.1 2025/03/??

The following classes have been replaced by the class Path:

  • PathEnumed
  • PathPrev
  • PathRef
  • PathVertex
  • PathVertexPtr
  • PathVertexRep

The PathExpanded::prevArc function has been removed. Use Path::prevArc instead.

Release 2.4.0 2023/01/19

The Network API and associated containers now const the network class objects. The Network API now requires network objects to have an id function that returns an ObjectId (unsigned int) that is unique to the object among objects of the same type.

virtual ObjectId id(const Instance *instance) const = 0;

Object IDs are used for comparing and hashing network objects. If network IDs are not available in the host application database, object pointers can be cast to intptr_t. Using pointers as object IDs can result in memory layout dependent results that are inconsistent from run to run or across host systems.

Many Network and Sta class functions now return collections rather than pointers to temporary collections that the caller would have to delete.

Release 2.3.1 2022/06/12

LibertyCellTimingArcSetIterator has been removed. Use range iteration as shown below:

for (TimingArcSet *arc_set : cell->timingArcSets())
for (TimingArcSet *arc_set : cell->timingArcSets(from, to))

TimingArcSetArcIterator has been removed. Use range iteration as shown below:

for (TimingArc *arc : arc_set->arcs())

LibertyCellSequentialIterator has been removed.

for (Sequential *seq : cell->sequentials())

Release 2.1.1 2020/12/13

Report::error and Report::warn functions now take a unique message ID as a first argument. InternalError has been renamed Report::critical.

Release 2.1.0 2020/04/05

All public header files have been moved to include/sta.

The following iterators have been removed. Use range iteration on the returned collection shown next to them instead.

LibertyCellInternalPowerIterator cell->internalPowers()
LibertyCellLeakagePowerIterator cell->leakagePowers()

Release 2.0.18 2020/02/15

The following iterator functions are deprecated:

  • TimingArcSet::timingArcIterator()
  • Sdc::clockIterator()

Use the iterator class constructor instead. This avoids new/deletes of the iterators by stack allocating them. For example, instead of:

TimingArcSetArcIterator *arc_iter = arc_set->timingArcIterator();
while (arc_iter->hasNext()) {
  TimingArc *arc = arc_iter->next();
}
delete arc_iter;

use the following:

TimingArcSetArcIterator arc_iter(arc_set);
while (arc_iter.hasNext()) {
  TimingArc *arc = arc_iter.next();
}

StaException renamed to Exception.

Release 2.0.17 2019/11/11

Network::setVertexIndex renamed to setVertexId. Network::vertexIndex renamed to vertexId.

TransRiseFall renamed to RiseFall. TransRiseFallBoth renamed to RiseFallBoth.

Release 2.0.0 2018/06/11

Initial release.